У меня есть приложение, построенное на 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 не получает его, я предполагаю, что это ошибка сервера, но я не знаю, как это исправить.