【发布时间】:2018-09-25 15:05:02
【问题描述】:
问题
在 localhost 上发出 CORS 请求以登录我的应用时,我在 Sierra 上运行的最新版本的 Safari/Firefox 上收到以下错误。
在 Chrome 上执行此操作绝对可以正常工作,没有任何问题。我正在使用正确启用 CORS 的 Laravel 5.6+。
Safari
火狐
Firefox 网络标签
/login POST OK, /user GET NOPE
Chrome /user GET(注意 Access-Control-Allowed-Origin)
但是在 Safari/Firefox 上,在 /user GET 上做同样的事情,该标头丢失了 (?)
Laravel 5.6 CORS 设置
'supportsCredentials' => false,
'allowedOrigins' => [env('ALLOWED_ORIGINS')],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['Origin', 'Content-Type', 'X-Requested-With', 'Accept', 'Authorization'],
'allowedMethods' => ['*'],
'exposedHeaders' => ['*'],
'maxAge' => 0,
工具
- Laravel 混合
- Laravel 5.6+
- axios
- Vue.js 2
- @websanova/vue-auth
我还在 axios 上将以下内容设置为默认值。没有理由说这个在 Chrome 最新版本上运行的代码不能在 FF/Safari 上运行。我一直在努力解决这个问题几个小时,但无济于事。
window.axios = axios;
window.axios.defaults.headers.post['Content-Type'] = 'application/json';
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.baseURL = baseURL;
更新
我注意到在 Chrome 上为 /user GET 设置了 Authorization Bearer,但在 Firefox 或 Safari 上却没有。这是荒谬的。这里可能出了什么问题?
【问题讨论】:
-
firefox 响应为 401,chrome 为 200。CORS 库可能未在错误响应中发送 CORS 标头。
-
@apokryfos 请在最底部查看我的更新。不,它实际上也会在错误响应中发送 CORS 标头。
标签: laravel firefox safari cors axios