Просмотр полной версии : Передать заголовок header
Ребят, никак не могу передать заголовок Authorization, который передается в каждом запросе типа:
PHP:
$jwt="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9";
$headers= [
"Authorization: ".$jwt,
];
Мой код:
В одном файле формирую данные:
PHP:
/* ........ */
$checkSum="";
$paramList= array();
$paramList["wallet_to"] =$this->wallet_to;
$paramList["sum"] =$amount;
$paramList["order_id"] =$tnx_id;
$paramList["hook_url"] =cn("add_funds/lava/complete");
$paramList["success_url"] =cn("add_funds/success");
$paramList["fail_url"] =cn("add_funds/unsuccess");
$paramList["expire"] =$this->lava_expiretime;
$paramList["subtract"] =$this->lava_substract;
$paramList['comment'] =$this->lava_comment;
$data= array(
'paramList'=>$paramList,
'checkSum'=>$checkSum,
);
$this->load->view("lava/redirect",$data);
В другом файле форму: (redirect.php)
HTML:
$value) {
echo '';
}
?>
$(function() {
document.getElementById("payment_method_form").submit();
});
Как же мне сюда можно внедрить передачу заголовка? Крутил и туда, и сюда, и curl пихал, но не получается никак.
ceg said:
↑ (https://antichat.live/posts/4486721/)
Ребят, никак не могу передать заголовок Authorization, который передается в каждом запросе типа:
PHP:
$jwt="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9";
$headers= [
"Authorization: ".$jwt,
];
Мой код:
...
Как же мне сюда можно внедрить передачу заголовка? Крутил и туда, и сюда, и curl пихал, но не получается никак.
Вам надо как минимум исправить код для заголовка, там не хватает слова Bearer перед самим JWT токен.
PHP:
$jwt="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9";
$headers= [
"Authorization: Bearer ".$jwt,
];
что-бы передавать заголовки, можете использовать Жабускрипт и:
Fetch (https://developer.mozilla.org/ru/docs/Web/API/Fetch_API/Using_Fetch) или же
XMLHttpRequest и setRequestHeader (https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/setRequestHeader)('Authorization','Bearer '+ JWToken);
fandor9 said:
↑ (https://antichat.live/posts/4486740/)
не хватает слова Bearer перед самим JWT токен.
Взял с документации https://docs.lava.ru/primery-raboty-s-api/php
Вместо:
HTML:
$value) {
echo '';
}
?>
$(function() {
document.getElementById("payment_method_form").submit();
});
пишу:
HTML:
$value) {
echo '';
}
?>
var http = new XMLHttpRequest();
var url = 'https://api.lava.ru/invoice/create';
var params = '';
http.open('POST', url, true);
//Send the proper header information along with the request
http.setRequestHeader('Authorization','Bearer '+'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9');
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
console.log(this.responseText);
http.send(params);
Получаю в консоле ошибки:
undefined
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://api.lava.ru/invoice/create. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»). Код состояния: 200.
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://api.lava.ru/invoice/create. (Причина: не удалось выполнить запрос CORS). Код состояния: (null).
Куда стоит копать дальше?
Сделал все таки с помощью curl.
Вариант сработал, но посмотрите, можно ли оставлять такой вариант получения данных и перенаправление страницы? Пробовал перенаправлять с помощью header - ошибка в консоле по поводу запрета чтения удаленного ресурса.
PHP:
$url="https://api.lava.ru/invoice/create";
$headers= ["Authorization: ".$this->lava_apikey,];
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$paramList);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
$result=curl_exec($curl);
$response=json_decode(curl_exec($ch),true);
curl_close($ch);
$redirecturl=$response["url"];
echo"self.location='$redirecturl';";
Так как вы делаете запрос с источника, который отличается от цели, из-за политики общего происхождения (https://habr.com/en/post/514684/) ("same-origin policy") то браузер не даёт читать/использовать данные которые получает в ответе. По идее API должен отдавать в ответах CORS (https://developer.mozilla.org/ru/docs/Web/HTTP/CORS) заголовки "Access-Control-Allow-Origin" со значением либо * (любой источник может читать/использовать информацию ответов) либо же со значением подходящее под источник "Access-Control-Allow-Origin: hxxps://test.ololo.ru/"
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot