#php #curl #php-curl
Вопрос:
Я пытаюсь отправить запрос GET на сервер python с маркером авторизации в заголовке.
Я действительно получаю запрос на стороне сервера, но без маркера авторизации
Вот php-код, который генерирует запрос :
<?php
$url = "http://localhost:7432/f.php";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(
"Authorization: sdfascvthsgdgdssgvsgscf",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
Когда я генерирую запрос из Reqbin, я получаю запрос с маркером авторизации в заголовке , но когда я пытаюсь сгенерировать запрос из файла php, он не отправляет маркер авторизации на сервер
Вот запрос, полученный на стороне сервера, когда я использую веб-сайт Reqbin для выполнения запроса:
127.0.0.1 - - [03/Sep/2021 13:27:10] "GET /f.php HTTP/1.1" 200 - Host: localhost:7432 Connection: keep-alive sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="92", "Opera";v="78" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 OPR/78.0.4093.184 sec-ch-ua-mobile: ?0 Authorization: sdfascvthsgdgdssgvsgscf Accept: */* Sec-Fetch-Site: none Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Cookie: _ga=GA1.1.1359401486.1622671713
И это полученный запрос, когда я использую php-код, упомянутый выше :
127.0.0.1 - - [03/Sep/2021 13:27:20] "GET /f.php HTTP/1.1" 200 - Host: localhost:7432Connection: keep-alive Cache-Control: max-age=0 sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="92", "Opera";v="78" sec-ch-ua-mobile: ?0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 OPR/78.0.4093.184 Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Cookie: _ga=GA1.1.1359401486.1622671713
Что я делаю не так на стороне php ?
Комментарии:
1. Обычный формат для значения заголовка авторизации
<type> <credentials>
— вы действительно просто отправляете то, что показали?2. @CBroe Да, я отправляю точно то же самое , что я опубликовал выше , на веб-сайте reqbin есть возможность отправлять различные типы токенов аутентификации, например , базовые , или с учетными данными для входа, и третий вариант-отправлять только пользовательский токен, я использовал пользовательский токен, и когда я отправляю его с помощью reqbin, все работает, но не когда я отправляю то же самое с php
3. Почему, что это должна быть за схема авторизации? Я предполагаю, что cURL, возможно, отфильтровывает это из-за «недопустимого» формата?
4. Не уверен , что это так , но сам php-код-это тот же код , который reqbin использует для отправки запроса, потому что это код, который reqbin сгенерировал для запроса, поэтому я просто скопировал точно такой же код
5. Итак, что происходит, когда вы пытаетесь отправить что-то вроде
Authorization: Bearer sdfascvthsgdgdssgvsgscf
вместо этого, попадает ли заголовок на сервер тогда?