【发布时间】:2017-07-05 20:48:41
【问题描述】:
与 CORS 战斗。我有一个网站正在向我用 C# 构建的 WEB API 发出简单的 XmlHttpRequest。
var xhr = new XMLHttpRequest();
xhr.open("GET","https://server/controller/method", true);
xhr.send();
在我的 web.config 中,我做了以下操作:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
我还尝试安装 Nuget 包并在我的 WebApiConfig.cs 中执行以下操作
var cors = new EnableCorsAttribute(
origins: "*",
headers: "*",
methods: "*");
config.EnableCors(cors);
尽管做出了这些努力,CORS 仍然无法正常工作。在 FireFox 控制台中,我收到以下错误:
跨域请求被阻止:同源策略不允许读取位于https://server 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。
IE 也只是失败并且没有给出错误。
根据我所阅读的所有内容,这些解决方案之一应该可以工作,但它们不能。是否需要在客户端 JavaScript 中启用/更改某些内容?当您在 localhost:PortNumber 上的 Visual Studio IIS Express 中运行 CORS 时,它是否不起作用?我错过了什么?
【问题讨论】:
-
在常规 http 上运行是否会出现同样的问题?
-
我正在尝试从 https 站点运行它,当我尝试正常的 http 时,我收到有关混合内容的错误,并且永远不会发出请求。
-
用邮递员试试吧。
-
它在 Chrome 中工作......我认为 FireFox 是问题所在。 stackoverflow.com/questions/24371734/…
-
是的,但是问题在于您的 https 证书
标签: javascript c# asp.net-web-api cors