- Я использую Apache для разработки и Nginx на новом рабочем сервере, который я только что предоставил.
- В моем проекте Laravel есть форма (X), которая приводит к HTTP 400 при отправке POST в Nginx с использованием Chrome. Она не похожа на типичную страницу ошибки Laravel
Код: Выделить всё
Oops! An Error Occurred The server returned a "400 Bad Request". Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused. - также пуст, когда отображается HTTP 400, что подтверждает, что это не ошибка, сгенерированная PHP.
Код: Выделить всё
storage/logs/laravel.log - Когда я формирую X POST для того же кода, работающего на Apache, я получаю HTTP 200.
- Еще более странно, когда я отправляю POST в Nginx, используя другую форму, например вход, он возвращает HTTP 200.
- В совокупности это представляет для меня довольно запутанную картину.
- Я предоставил свою конфигурацию Nginx, блейд и воспроизведение запроса с помощью Curl с помощью Chrome.
- Я пытаюсь понять, почему это происходит на Nginx и каковы мои варианты правильной POST для обоих типов серверов, учитывая, что я могу контролировать только блейд
- Смотрите журналы Nginx из моего оригинала ОП https://stackoverflow.com/revisions/f5b ... iew-source
Код: Выделить всё
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
index index.html;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob;" always;
error_page 404 /index.php;
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
Код: Выделить всё
@csrf
Submit
Код: Выделить всё
curl 'https://example.com' \
-H '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.7' \
-H 'accept-language: en-US,en;q=0.9' \
-H 'cache-control: no-cache' \
-H 'content-type: application/x-www-form-urlencoded' \
-b 'XSRF-TOKEN=eyJpdiI6Ik9lK0JLZWhqWEUrOVR6TWxtYWgyMHc9PSIsInZhbHVlIjoiQys0N0ZNOFpXZGR6SFcyaGk5d0w1LzBDblFNQmF6b045WmV1UjR2Z2xUZFA0RFRFMVhWQjA5Y0M2d2pjRzdNSUFSRzc5cmc5NlhKWUdQUmZoUDI4RDJzbnMvMUhWd0IzNVREbG5XRHVRM1Y2Mm1xY1NwL2V4ckpiV2pKQThyVm8iLCJtYWMiOiI0MWVjM2U2NWI4OTNkZmFlMDkzZDgwNzE2NmVmM2Y4MDI2NGIxMGZjZjc1OTFhZDBmMGY4ZTBiMDk3MmU4NzVjIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6ImhYZXhLZHl4K1FEVC9HcVR6OXdwcmc9PSIsInZhbHVlIjoiZjcvRGlYSEJXSGIvanBuQmdPNlVnMENGWmxyTURPbGJNNHprUVV5ZDg5ck8rWXJCQ2FPM2FXZ2NCczRSVXVFNUlVRkpweVdHOGpYQnFTcUlGTk1MVTBaZG10UlprK3g1UitENUd6K0VWMklSSTBPNld1NG5pMU5jakN2c2taYWwiLCJtYWMiOiIyZTMyODQ4MjI4MjY1YmExMWZlNDdhNTdjZWIxZTQ3NDM5OTQ1NDY4OWExNWM0ZTE5YzBlNDk5ZjExMGY5ZTQ3IiwidGFnIjoiIn0%3D' \
-H 'dnt: 1' \
-H 'origin: https://example.com' \
-H 'pragma: no-cache' \
-H 'priority: u=0, i' \
-H 'referer: https://example.com' \
-H 'sec-ch-ua: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "Windows"' \
-H 'sec-fetch-dest: document' \
-H 'sec-fetch-mode: navigate' \
-H 'sec-fetch-site: same-origin' \
-H 'sec-fetch-user: ?1' \
-H 'upgrade-insecure-requests: 1' \
-H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36' \
--data-raw '_token=&email=dibo%40example.com&name=Amal+Britt&mobile_number=1&workshop_date=inform_next_webinar&push-subscription-data=&g-recaptcha-response='
После дальнейшего устранения неполадок виновником оказался -b 'XSRF-TOKEN=.... Как мне настроить Nginx на его принятие? Добавление big_client_header_buffers 8 16k; в конфиг Nginx не помогло.
Подробнее здесь: https://stackoverflow.com/questions/798 ... s-http-400