【问题标题】:I'm not using the wildcard in Access-Control-Allow-Origin, but Chrome says that I am我没有在 Access-Control-Allow-Origin 中使用通配符,但 Chrome 说我是
【发布时间】:2018-08-07 10:13:27
【问题描述】:

我正在使用 ionic serve 在端口 8080 上运行一个离子应用程序。我确实了解预检过程,并且我相信我得到了正确的响应:

我仍然收到此错误:

无法加载https://bla.bla:对预检请求的响应未通过访问控制检查:响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”,当请求的凭据模式是“包含”。因此,Origin 'http://localhost:8080' 不允许访问。 XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

然后,真正的请求 (GET) 不会被发送。 更奇怪的是,就在这个请求之前,我能够将 POST 发送到同一台服务器。响应标头是相同的。请求的唯一区别是 Access-Control-Request-Headers 是 content-type 而不是 authentication

有什么想法吗?

【问题讨论】:

  • @Andreas 看起来不像。我绝对可以从 localhost:8080 向我的服务器发送 POST 请求,预检不会阻止它。但是上面的 GET 被拒绝了
  • 您实际测试的是什么浏览器?屏幕截图中 User-Agent 请求头的值看起来像 iPhone 浏览器引擎发送的值,而不是 Chrome/Blink。但是你的标题和标签是 Chrome。
  • 您是否在其他浏览器(Firefox?)中测试过该请求,您是否得到相同的错误?
  • @sideshowbarker 我正在使用 chrome,这可能是因为我激活了设备切换

标签: javascript google-chrome cors


【解决方案1】:

终于找到答案了,是我的错,不是chrome bug。

问题是,前段时间我尝试使用此扩展程序: https://chrome.google.com/webstore/detail/cors-toggle/jioikioepegflmdnbocfhgmpmopmjkim?hl=en

它不能满足我的需要,但我忘了卸载它。事实证明它存在某种冲突,因为它似乎为每个响应添加了一个“Access-Control-Allow-Origin:*”标头。因此,它会在带有凭据的请求中发生冲突(我猜 Authentication 标头会这样做,不知道为什么会这样)。

无论如何,我卸载它后,它现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 2017-11-20
    • 2014-11-26
    • 2017-06-15
    • 2011-09-02
    • 2014-10-21
    • 2016-05-11
    • 2017-01-17
    • 2019-01-05
    • 2017-03-05
    相关资源
    最近更新 更多