php - Laravel 飞行前 CORS
问题描述
我对 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');
而且我仍然无法在 Firefox 上发出 PUT 请求。我收到“Same Origin Policy”错误 - 在 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>
推荐阅读
- r - gsub无法删除R中的空括号
- html - Django - 在基本模板中显示警报消息
- javascript - 你如何使用 Webpack 和 Babel 进行编译?
- javascript - 如何让控制台打印出名称,记住名称变量不是恒定的?
- python - 尝试使用 Python PDFMINER 从 PDF 中提取文本时出错
- python - 如何在网站上抓取地图以获取存储在弹出窗口中的信息?
- java - Jackson多态树状结构反序列化
- java - Java/Android - ECDH 加密 - 从字符串创建 ECPublicKey
- javascript - 如何清除使用新 ES6 方法创建的间隔 (setInterval)?
- flutter - Rzorpay 没有对 gpay 交易进行任何回电:flutter