Web API 2 - CORS仅适用于HTTPS(不是HTTP)

时间:2015-06-22 17:47:48

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

所有

我正在开发一个非常简单的Web API 2项目。出于某种原因,我不能让CORS正常工作,除非我把它放在web.config文件中。我按照MSDN articleASP.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),而且据我所知,这个应该

更新

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

解决方案

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

1 个答案:

答案 0 :(得分:0)

<强>解决方案

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