问题
在本地主机上发出登录我的应用程序的CORS请求时,我在Sierra上运行的最新版Safari / Firefox上收到以下错误。
在Chrome上做这件事然而绝对没有任何问题。我正在使用正确启用CORS的Laravel 5.6+。
Safari浏览器
火狐
Firefox网络标签
/ login POST OK,/ user GET NOPE
Chrome /用户获取(注意访问控制允许 - 来源)
但是在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,
工具
我也在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,但在Firefox或Safari上没有设置。这很荒谬。这里可能出现什么问题?
答案 0 :(得分:2)
发现问题:
'exposedHeaders' => ['Authorization'],
必须在我的cors.php
中明确。
[]
或['*']
。然而Chrome接受了它。怪异
现在,这似乎违反了Chrome的CORS。
并不关心外露接头是否设置正确。 它仍然有效。