Web API 2 - CORS 仅适用于 HTTPS(而非 HTTP)
Web API 2 - CORS only works over HTTPS (not HTTP)
全部,
我正在处理一个非常简单的 Web API 2 项目。出于某种原因,我无法让 CORS 正常工作,除非我将它放在 web.config 文件中。我按照 MSDN article and this ASP.NET article 上的说明进行操作,但我一定遗漏了一些东西。
Global.asax.cs
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
}
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.EnableCors(new EnableCorsAttribute("*","*","*"));
config.MapHttpAttributeRoutes();
}
JavaScript
$.ajax({
url: '//myapidomain.com/buildings'
}).done(function (data) {
var theList = $('.buildings'),
theListHTML = "",
response = JSON.parse(data);
$.each(response.Buildings.Data, function () {
theListHTML += '<li>' + this.Description + '</li>';
});
theList.html(theListHTML);
});
我几乎查看了每一个 Stack Overflow(例如 ) and MSDN forum post (like this one),据我所知,应该 有效。该应用程序托管在 IIS 8 服务器 运行 4.0 上。
更新
这似乎与请求本身有关(或者更确切地说是 IIS 配置)。如果我通过 HTTP 发送请求,则会失败(没有 access-control headers 被发回)。但是,如果我通过 HTTPS 请求它,一切正常。
解决方案
我们的托管环境正在拦截 non-HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它 returns 一个 304 jQuery 的方法不知道如何处理。解决方案要么始终通过 HTTPS(首选)发出请求,要么处理这种情况 yourself/find 另一种 library/plugin 来处理这种情况。
解决方案
我们的托管环境正在拦截非 HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它 returns 一个 304 jQuery 的方法不知道如何处理。解决方案要么始终通过 HTTPS(首选)发出请求,要么处理这种情况 yourself/find 替代方案 library/plugin 来处理这种情况。
全部,
我正在处理一个非常简单的 Web API 2 项目。出于某种原因,我无法让 CORS 正常工作,除非我将它放在 web.config 文件中。我按照 MSDN article and this ASP.NET article 上的说明进行操作,但我一定遗漏了一些东西。
Global.asax.cs
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
}
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.EnableCors(new EnableCorsAttribute("*","*","*"));
config.MapHttpAttributeRoutes();
}
JavaScript
$.ajax({
url: '//myapidomain.com/buildings'
}).done(function (data) {
var theList = $('.buildings'),
theListHTML = "",
response = JSON.parse(data);
$.each(response.Buildings.Data, function () {
theListHTML += '<li>' + this.Description + '</li>';
});
theList.html(theListHTML);
});
我几乎查看了每一个 Stack Overflow(例如
更新
这似乎与请求本身有关(或者更确切地说是 IIS 配置)。如果我通过 HTTP 发送请求,则会失败(没有 access-control headers 被发回)。但是,如果我通过 HTTPS 请求它,一切正常。
解决方案
我们的托管环境正在拦截 non-HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它 returns 一个 304 jQuery 的方法不知道如何处理。解决方案要么始终通过 HTTPS(首选)发出请求,要么处理这种情况 yourself/find 另一种 library/plugin 来处理这种情况。
解决方案
我们的托管环境正在拦截非 HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它 returns 一个 304 jQuery 的方法不知道如何处理。解决方案要么始终通过 HTTPS(首选)发出请求,要么处理这种情况 yourself/find 替代方案 library/plugin 来处理这种情况。