Заголовок авторизации не достигает API только по запросу GET (nginx) - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть приложение, построенное на laravel, и локально все работает нормально, но на сервере оно работает неправильно.

Приложение размещено на nginx, и запросы PUT, POST, DELETE могут отправлять заголовок авторизации в API, кроме запроса GET.

Что делает это странным, потому что я знаю, что в apache вам нужно разрешить заголовок авторизации, а в nginx в этом нет необходимости.

Также я отлаживал при вызове маршрута Route::get('reports/{amount}','ReportsController@show'); Заголовок авторизации не достигает API, но он существует в заголовке запроса.

А когда я меняю метод маршрута на POST: Route::post('reports/{amount}','ReportsController@show'); Заголовок авторизации достигает API.

Это конфигурация сервера nginx:

server {
listen 80;
listen [::]:80;

client_max_body_size 10M;

#add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

add_header X-Frame-Options SAMEORIGIN;
add_header X-Frame-Options 'allow-from https://www.someweb.com';
    add_header X-Frame-Options 'allow-from https://www.someweb.com';
add_header X-Content-Type-Options nosniff;
    add_header 'Referrer-Policy' 'strict-origin';
    add_header X-XSS-Protection "1; mode=block";

root /var/www/html;

index index.html index.htm index.nginx-debian.html, index.php;

error_page 404 /404.html;

include snippets/fastcgi-php.conf;

location /security {
    alias /var/www/html/security/public;
    try_files $uri $uri/ @security;

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
}

location @security {
        rewrite /security/(.*)$ /security/index.php?/$1 last;
    }
}

Я не очень знаком с nginx, но не вижу никаких исключений для заголовков или запросов GET. Кто-нибудь сталкивался с этой проблемой?

Есть ли способ определить, в чем заключается проблема? Поскольку в моем браузере есть заголовок, а API не получает его, я предполагаю, что это ошибка сервера, но я не знаю, как это исправить.

1 Ответ

0 голосов
/ 15 ноября 2018

Я почти уверен, что вы должны добавить его в список разрешить заголовки , которые могут быть получены в вашей конфигурации nginx ..

add_header Access-Control-Allow-Headers "Authorization";

Я почти в той же лодке, что и вы, поэтому, вероятно, у меня возникнет та же проблема, но в моем Dev я знаю, что для allowHeaders установлен подстановочный знак.

Возможно, вам также придется перечислить add_header Access-Control-Allow-Methods "GET POST DELETE OPTIONS"; или использовать *?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...