Подтвердить что ты не робот

Laravel получить заголовки запроса

Я использую POSTMAN для отправки запроса GET в api с заголовком, содержащим авторизацию.

Я знаю, что заголовок данных работает, потому что если он не возвращает маршрут, ошибка 401.

Я хотел получить заголовок авторизации следующим образом:

$access_token = Request::header('Authorization');

Но заметил, что он возвращает NULL.

Итак, я попытался поймать значения с помощью:

die(var_dump(Request::header()));

И заметил, что в нем нет заголовка авторизации. Просто размещайте заголовки файлов cookie.


Обновление

Должно получиться Authorization: Bearer ACCESS TOKEN

4b9b3361

Ответ 1

Какую версию POSTMAN вы использовали?

Являетесь ли вы на своем локальном компьютере или управляемом сервере, некоторые хостинговые компании не разрешают АВТОРИЗАЦИОННЫЙ ЗАВОД.

.htaccess модификация

 RewriteEngine On
 RewriteCond %{HTTP:Authorization} .
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Ответ 2

Ответ от dschniepp прав, но у меня тоже есть проблемы с этим. Вы должны сделать две вещи:

  • Проверьте, доступен и активирован mod_rewrite.
  • Обновите файл .htaccess Laravel, расположенный в общей папке.

В первой точке вы должны проверить, доступен ли модуль "mod_rewrite" через функцию php_info в отдельном файле php. Затем, если он доступен, вам нужно активировать его, что зависит от конфигурации вашего веб-сервера, в моем поле Nitrous я добавил эти строки в файл httpd.conf:

<IfModule mod_rewrite>
   RewriteEngine On
</IfModule>

Или вы также можете активировать модуль в файле .htaccess:

RewriteEngine On

Затем в том же файле .htaccess, который находится в общей папке в корневом каталоге приложения laravel, вы должны добавить следующие строки:

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

Эти линии работали для меня. Файл .htaccess должен выглядеть следующим образом:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

И что это, у вас должен быть заголовок авторизации в массиве Request:: header(). Просто, чтобы прояснить, это проблема с Apache, а не с самим Laravel.

Ответ 3

Проводя это здесь, когда он решил мою проблему. Это относится к поддоменам, но, очевидно, может быть скорректировано и для простых доменов. Применил это в файле маршрутов вверху.

$newUrl = '';
try{
    $urlParts = parse_url($_SERVER['HTTP_REFERER']) ?? '';
    $newUrl = $urlParts['scheme'] . "://" . $urlParts['host'];
    if(!stristr($newUrl, '.yourdomain.com')){
        $newUrl = 'false';
    }
}catch(Exception $e)
{}
header('Access-Control-Allow-Origin: ' . $newUrl);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: access-control-allow-origin,cache-control,content-type,postman-token');

Ответ 4

В Laravel 5.5 вы можете читать пастухов, используя apache_request_headers, просто прочитайте его в своем контроллере по следующим строкам

$headers = apache_request_headers();
dd($headers['Authorization']);

Убедитесь, что вы добавили использование Illuminate\Http\Request; в вашем контроллере