У меня проблема с Laravel CORS. Я установил barryvdh/laravel-cors
в комплекте со следующим файлом конфигурации:
'supportsCredentials' => false,
'allowedOrigins' => ['*'],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['PUT', 'GET', 'OPTIONS', 'POST', 'DELETE'],
'exposedHeaders' => [],
'maxAge' => 0,
Я даже добавил следующие строки в мой AppServiceProfider.php
файл
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Authorization,Content-Type,X-Requested-With,X-CSRF-TOKEN');
header('Access-Control-Allow-Methods: POST,GET,PUT,OPTIONS,DELETE');
И я до сих пор не могу сделать запрос PUT на Firefox. Я получаю сообщение об ошибке «Политика одинакового происхождения» — метод не найден в заголовке CORS «Access-Control-Allow-Methods».
Что странно: как вы видите, я установил заголовок Allow-Methods на POST,GET,PUT,OPTIONS,DELETE
, но каждый браузер говорит, что установлен *
:
Access-Control-Allow-Headers: Authorization,Content-Type,X-Requested-With,X-CSRF-TOKEN
Access-Control-Allow-Methods:*
Access-Control-Allow-Origin: *
Что еще страннее — когда я делаю тот же запрос в Postman, заголовки выглядят хорошо:
access-control-allow-headers →Authorization,Content-Type,X-Requested-With,XCSRF-TOKEN
access-control-allow-methods →POST,GET,PUT,OPTIONS,DELETE
В чем дело? Отличается ли обработка Laravel перед полетом?
У меня была такая же проблема, я решил ее, установив заголовки в файл .htaccess как
<IfModule mod_rewrite.c>
#...... other settings here
Header set Access-Control-Allow-Origin "*"Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"Header set Access-Control-Max-Age "1000"Header set Access-Control-Allow-Headers "access_token, x-requested-with, Content-Type, Accept-Encoding, Accept-Language, Cookie, Referer"</IfModule>
Других решений пока нет …