【问题标题】:Web API CORS does not return correct Access-Control-Allow-Origin headerWeb API CORS 不返回正确的 Access-Control-Allow-Origin 标头
【发布时间】:2017-01-01 04:04:28
【问题描述】:

尝试了解和调试 WebAPI 2 上的 CORS 设置问题。 我的前端 angular/javascript 应用程序在

处与我的 API 通信

http://api.example.com/api/items/GetAll

有时会返回以下错误:

“Access-Control-Allow-Origin”标头有一个值 'http://example.com' 不等于提供的原点。 因此,不允许访问 Origin 'http://www.example.com'。

在 Fiddler 上测试 api 链接会在标题中返回以下内容:

访问控制允许来源:http://example.com

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 很清楚,一方面你有http://example.com,另一方面你有http://www.example.com(注意www)。这些不是同一个起源。 api.example.com 也不是,这似乎更有可能是这些更改错误之一中的内容。
  • 是的,但我的问题是:为什么在标题中返回 example.com 虽然我的 API 是从 www.example.com 调用的?
  • 如果没有任何minimal reproducible example,任何人都无法知道您的代码返回错误结果的原因。

标签: javascript angularjs asp.net-web-api cors


【解决方案1】:

您的客户端代码中似乎调用了这两种类型的域/URL。

基于该假设,应该为两个域指定 CORS,即

http://example.com 
http://www.example.com

参考文献:

  1. https://www.w3.org/TR/cors/#access-control-allow-origin-response-header
  2. Access-Control-Allow-Origin wildcard subdomains, ports and protocols

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 2016-05-13
    • 2016-08-21
    • 2019-06-19
    • 2012-03-25
    • 2019-03-31
    • 2018-09-19
    • 2013-07-08
    相关资源
    最近更新 更多