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

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

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

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

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

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

Поэтому я попытался поймать значения с помощью:

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

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


Обновить

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

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

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

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

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

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

  1. Убедитесь, что mod_rewrite доступен и активирован.
  2. Обновите файл .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.

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

 $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'); 

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

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

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