Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Передать заголовок header (https://forum.antichat.xyz/showthread.php?t=486052)

ceg 06.01.2022 22:27

Ребят, никак не могу передать заголовок Authorization, который передается в каждом запросе типа:

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]= [
[/
COLOR][COLOR="#DD0000"]"Authorization: "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"],
];
[/
COLOR][/COLOR

Мой код:

В одном файле формирую данные:

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#FF8000"]/* ........ */
[/COLOR][COLOR="#0000BB"]$checkSum[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"wallet_to"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]wallet_to[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"sum"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$amount[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"order_id"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$tnx_id[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"hook_url"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]cn[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"add_funds/lava/complete"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"success_url"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]cn[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"add_funds/success"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"fail_url"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]cn[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"add_funds/unsuccess"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"expire"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]lava_expiretime[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"subtract"[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]lava_substract[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'comment'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]lava_comment[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$data[/COLOR][COLOR="#007700"]= array(
[/
COLOR][COLOR="#DD0000"]'paramList'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]'checkSum'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$checkSum[/COLOR][COLOR="#007700"],
);
[/
COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]load[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]view[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"lava/redirect"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$data[/COLOR][COLOR="#007700"]);
[/
COLOR][/COLOR

В другом файле форму: (redirect.php)

Код HTML:

HTML:

 
 
   
   
      $value) {
        echo '';
      }
      ?>
     
        $(function() {
          document.getElementById("payment_method_form").submit();
        });
     
   
 

Как же мне сюда можно внедрить передачу заголовка? Крутил и туда, и сюда, и curl пихал, но не получается никак.

fandor9 07.01.2022 02:09

Цитата:

Сообщение от ceg
ceg said:

Ребят, никак не могу передать заголовок Authorization, который передается в каждом запросе типа:
PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]= [
[/
COLOR][COLOR="#DD0000"]"Authorization: "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"],
];
[/
COLOR][/COLOR

Мой код:
...
Как же мне сюда можно внедрить передачу заголовка? Крутил и туда, и сюда, и curl пихал, но не получается никак.

Вам надо как минимум исправить код для заголовка, там не хватает слова Bearer перед самим JWT токен.

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]= [
[/
COLOR][COLOR="#DD0000"]"Authorization: Bearer "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$jwt[/COLOR][COLOR="#007700"],
];
[/
COLOR][/COLOR

что-бы передавать заголовки, можете использовать Жабускрипт и:

ceg 07.01.2022 11:11

Цитата:

Сообщение от fandor9
fandor9 said:

не хватает слова Bearer перед самим JWT токен.

Взял с документации https://docs.lava.ru/primery-raboty-s-api/php

Вместо:

Код HTML:

HTML:

 
 
   
   
      $value) {
        echo '';
      }
      ?>
     
        $(function() {
          document.getElementById("payment_method_form").submit();
        });
     
   
 

пишу:

Код HTML:

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).


Куда стоит копать дальше?

ceg 07.01.2022 12:25

Сделал все таки с помощью curl.

Вариант сработал, но посмотрите, можно ли оставлять такой вариант получения данных и перенаправление страницы? Пробовал перенаправлять с помощью header - ошибка в консоле по поводу запрета чтения удаленного ресурса.


PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$url[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"https://api.lava.ru/invoice/create"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]= [[/COLOR][COLOR="#DD0000"]"Authorization: "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$this[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]lava_apikey[/COLOR][COLOR="#007700"],];

[/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_init[/COLOR][COLOR="#007700"]();
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_URL[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$url[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_POST[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_POSTFIELDS[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$paramList[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_RETURNTRANSFER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_HEADER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_HTTPHEADER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_exec[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$response[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]json_decode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]curl_exec[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]curl_close[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$ch[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$redirecturl[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$response[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]"url"[/COLOR][COLOR="#007700"]];

echo[/
COLOR][COLOR="#DD0000"]"self.location='[/COLOR][COLOR="#0000BB"]$redirecturl[/COLOR][COLOR="#DD0000"]';"[/COLOR][COLOR="#007700"];
[/COLOR][/COLOR


fandor9 07.01.2022 14:01

Так как вы делаете запрос с источника, который отличается от цели, из-за политики общего происхождения ("same-origin policy") то браузер не даёт читать/использовать данные которые получает в ответе. По идее API должен отдавать в ответах CORS заголовки "Access-Control-Allow-Origin" со значением либо * (любой источник может читать/использовать информацию ответов) либо же со значением подходящее под источник "Access-Control-Allow-Origin: hxxps://test.ololo.ru/"


Время: 10:25