CORS 请求在 Chrome 上工作正常,但在 Safari/Firefox 上不行

Ali*_*ani 5 safari firefox cors laravel axios

问题

当发出 CORS 请求登录到本地主机上的应用程序时,我在 Sierra 上运行的最新版本的 Safari/Firefox 上收到以下错误。

然而,在 Chrome 上执行此操作绝对可以正常工作,没有任何问题。我正在使用 Laravel 5.6+,并正确启用了 CORS。

苹果浏览器

在此输入图像描述

火狐浏览器

在此输入图像描述

火狐网络选项卡

在此输入图像描述

/login POST OK,/user GET NOPE

在此输入图像描述

Chrome /user GET(注意 Access-Control-Allowed-Origin)

在此输入图像描述

但是在 Safari/Firefox 上执行同样的操作,在/userGET 上,该标头丢失了(?)

在此输入图像描述

Laravel 5.6 CORS 设置

'supportsCredentials' => false,
'allowedOrigins' => [env('ALLOWED_ORIGINS')],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['Origin', 'Content-Type', 'X-Requested-With', 'Accept', 'Authorization'],
'allowedMethods' => ['*'],
'exposedHeaders' => ['*'],
'maxAge' => 0,
Run Code Online (Sandbox Code Playgroud)

工具

  1. Laravel 混合
  2. 拉拉维尔 5.6+
  3. Vue.js 2
  4. @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;
Run Code Online (Sandbox Code Playgroud)

更新

我注意到授权承载在 Chrome 上设置为/userGET,但在 Firefox 或 Safari 上则不然。这是荒谬的。这里可能出了什么问题?

Ali*_*ani 4

发现问题:

'exposedHeaders' => ['Authorization'],必须在我的cors.php.

[]或者['*']Safari 和 Firefox 不喜欢。然而 Chrome 接受了它。诡异的

现在,这似乎是 Chrome 违反 CORS 的行为。

它不关心暴露标头是否设置正确。它仍然有效。