【问题标题】:CORS request working fine on Chrome but not on Safari/FirefoxCORS 请求在 Chrome 上运行良好,但在 Safari/Firefox 上运行良好
【发布时间】: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,

工具

  1. Laravel 混合
  2. Laravel 5.6+
  3. axios
  4. Vue.js 2
  5. @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


【解决方案1】:

发现问题:

'exposedHeaders' => ['Authorization'], 在我的cors.php 中必须是明确的。

[]['*'] 不被 Safari 和 Firefox 喜欢。然而,Chrome 接受了它。奇怪

现在,这似乎违反了 Chrome 的 CORS。

不关心是否正确设置了 Exposed Headers。 它仍然有效。

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2018-02-04
    • 1970-01-01
    • 2014-10-13
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多