C# Web API 2-CORS仅在HTTPS(非HTTP)上工作

C# Web API 2-CORS仅在HTTPS(非HTTP)上工作,c#,asp.net-web-api,cors,iis-8,C#,Asp.net Web Api,Cors,Iis 8,全部, 我有一个非常简单的WebAPI2项目,我正在进行。由于某些原因,我无法让CORS正常工作,除非我将其放入web.config文件中。我按照上面的指示做了,但是我一定是遗漏了什么 Global.asax.cs protected void Application_Start() { WebApiConfig.Register(GlobalConfiguration.Configuration); } public static void Register(HttpConfigur

全部,

我有一个非常简单的WebAPI2项目,我正在进行。由于某些原因,我无法让CORS正常工作,除非我将其放入web.config文件中。我按照上面的指示做了,但是我一定是遗漏了什么

Global.asax.cs

protected void Application_Start()
{
    WebApiConfig.Register(GlobalConfiguration.Configuration);
}
public static void Register(HttpConfiguration config)
{
    config.EnableCors(new EnableCorsAttribute("*","*","*"));

    config.MapHttpAttributeRoutes();
}
WebApiConfig.cs

protected void Application_Start()
{
    WebApiConfig.Register(GlobalConfiguration.Configuration);
}
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);
    });
$.ajax({
url:“//myapidomain.com/buildings”
}).完成(功能(数据){
变量列表=$(“.buildings”),
列表html=“”,
response=JSON.parse(数据);
美元。每个(响应。建筑物。数据,功能(){
列表HTML+='
  • '+this.Description+'
  • '; }); html(theListHTML); });
    我已经看过了几乎每一个堆栈溢出(如)和MSDN论坛帖子(如),从我所知,这应该是可行的。该应用程序托管在运行4.0的IIS 8服务器上

    更新

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


    解决方案


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

    解决方案


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

    你能链接那篇MSDN文章吗?@Jasen-我已经更新了原始帖子,并添加了文章链接和我读过的其他帖子的链接,以尝试解决问题。失败时,网络标题是什么样子?@Jasen-Chrome网络控制台将其列为302,但有错误“请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源“[mydomain]”。“您是否在
    .ajax()
    请求中尝试了
    crossDomain:true
    选项?