Asp.net web api 信号机的CORS问题-不允许来源

Asp.net web api 信号机的CORS问题-不允许来源,asp.net-web-api,signalr,cors,Asp.net Web Api,Signalr,Cors,所以我已经阅读了前面所有关于这方面的问题,但是遵循这些步骤似乎对我不起作用。我得到的是“访问控制不允许源代码*允许源代码”,但这对我来说没有意义。如果我在Chrome的“自己”选项卡中打开相同的请求,并查看“网络”选项卡,我会看到下面的CORS标题完好无损。此外,集线器生成的数据也很好。我正在使用WebAPI、.NET4.5和Signal的rc2。我还尝试删除web.config中的允许凭据,但也没有帮助 Access-Control-Allow-Credentials:true Access-

所以我已经阅读了前面所有关于这方面的问题,但是遵循这些步骤似乎对我不起作用。我得到的是“访问控制不允许源代码*允许源代码”,但这对我来说没有意义。如果我在Chrome的“自己”选项卡中打开相同的请求,并查看“网络”选项卡,我会看到下面的CORS标题完好无损。此外,集线器生成的数据也很好。我正在使用WebAPI、.NET4.5和Signal的rc2。我还尝试删除web.config中的允许凭据,但也没有帮助

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:x-requested-with,X-CustomAuth,Content-Type,X-Impersonate
Access-Control-Allow-Methods:GET,OPTIONS,PUT,DELETE,HEADER
Access-Control-Allow-Origin:*
我还将
jQuery.support.cors
设置为
true
,尽管它已经是true,但我正在使用jQuery 1.9,下面是我与服务器和集线器的连接:

    jQuery.support.cors = true;
    $.connection.hub.url = 'http://myserver/api/signalr';
    $.connection.hub.start({ transport: 'longPolling', xdomain: true });
我也试着把这两个问题联系起来

    $.connection('http://myserver/api/signalr/echo').start(function () {
      console.log('Connected');

      $.connection.hub.start().done(function() {
        $log.info('Connected to hub.');
      });          
    });

如果
Access Control Allow Credentials
true
,则
*
值不能与
Access Control Allow Origin
标题一起使用。请尝试以下任一操作:

  • 完全删除访问控制允许凭据标头
  • Access Control Allow Origin
    的值从
    *
    更改为
    Origin
    标题的实际值

  • #1可能更容易做到,但如果您需要支持cookies,则需要2。

    根据官方文件,您应该不要使用jQuery.support.cors

    在代码中不要将jQuery.support.cors设置为true


    链接到官方文档:

    为了让事情变得更奇怪,我使用了中的示例代码来加载,并在与signalr相同的应用程序中尝试了一个url,因此相同的url但是/api/admin/someoperation,它加载得很好,但是当我尝试signalr的url时,再次出现跨源问题。我已尝试删除访问控制允许凭据值,但似乎没有帮助。不过我会再给它一次机会。信号器是否自己添加了允许凭据和来源?我用Fiddler查看了它,标题有时是重复的,但只在对SignalR的请求上,所以我删除了web.config中的定义,它可能正在工作,至少我现在正在连接。这对我来说是一个问题,因为这意味着我的应用程序的其余部分将有CORS问题。继续并标记这个问题,但SignalR自己添加这些头和CORS值似乎很奇怪,我在GH上看到了一个默认禁用它的问题,但我想现在还没有。