c# - Web API 2 - CORS 仅适用于 HTTPS(而非 HTTP)

标签 c# asp.net-web-api cors iis-8

全部,

我正在处理一个非常简单的 Web API 2 项目。出于某种原因,我无法让 CORS 正常工作,除非我将它放在 web.config 文件中。我按照 MSDN article 上的说明进行操作还有这个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(如 this one)和 MSDN 论坛帖子(如 this one),据我所知,这应该有效.该应用程序托管在运行 4.0 的 IIS 8 服务器上。

更新

它似乎与请求本身有关(或者更确切地说是 IIS 配置)。如果我通过 HTTP 发送请求,那么它将失败(没有访问控制 header 被发回)。但是,如果我通过 HTTPS 请求它,一切正常。

解决方案

我们的托管环境正在拦截非 HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它返回一个 304,jQuery 的方法不知道如何处理。解决方案要么总是通过 HTTPS(首选)发出请求,要么自己处理这种情况/找到处理这种情况的替代库/插件。

最佳答案

解决方案

我们的托管环境正在拦截非 HTTPS 请求并强制它们使用 HTTPS。当它这样做时,它返回一个 304,jQuery 的方法不知道如何处理。解决方案要么总是通过 HTTPS(首选)发出请求,要么自己处理这种情况/找到处理这种情况的替代库/插件。

关于c# - Web API 2 - CORS 仅适用于 HTTPS(而非 HTTP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986540/

相关文章:

Java 相当于 C# 中的#region

javascript - .net 中的日期与 javascript 中的日期

c# - 将 PDF 文件从 Fiddler 上传到 WebAPI 方法导致 415 Unsupported Media Type

jquery - 仅当有 header 时,CORS 请求才会在 Chrome 中失败

javascript - Pact 模拟服务器未返回正确的 CORS header

ajax - 对 OPTIONS 的 POST 更改 + 对预检请求的响应未通过访问控制检查 : No 'Access-Control-Allow-Origin' header

c# - 使用 Join、LINQ 然后 Split 从存储过程中获取 n 个绑定(bind)数据。使用多个结果,Linq2SQL

c# - WebBrowser.Document.Body 始终为空

c# - C#中继承和实现的区别

c# - 将表单数据和文件发布到 ASP.NET Web API