SignalR的CORS问题 - Origin不允许

时间:2013-02-13 13:17:22

标签: asp.net-web-api signalr cors

所以我已经阅读了之前的所有问题,但是按照这些步骤似乎并不适合我。我得到了“Access-Control-Allow-Origin不允许原点*”,但这对我没有意义。如果我在Chrome的自带标签中打开相同的请求,并查看网络标签,我会看到以下CORS标头完好无损。此外,集线器生成就好了。我正在使用Web API,.NET 4.5和SignalR的rc2。我还尝试删除web.config中的Allow-Credentials,但这也没有帮助。

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,即使它已经是真的,我正在使用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.');
      });          
    });

2 个答案:

答案 0 :(得分:0)

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

  1. 完全删除Access-Control-Allow-Credentials标头。
  2. Access-Control-Allow-Origin的值从*更改为Origin标题的实际值。
  3. #1可能更容易,但如果您需要支持cookie,则需要#2。

答案 1 :(得分:0)

根据官方文档,您应该使用 jQuery.support.cors

  

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

链接到官方文档:official doc