SignalR:有没有被允许的误差访问控制允许来源
试图从另一个域调用signalR,并不断收到此错误:SignalR:有没有被允许的误差访问控制允许来源
XMLHttpRequest cannot load localhost:62150/signalr/negotiate?_=1362242757692. Origin localhost:4982 is not allowed by Access-Control-Allow-Origin.
这是我想要的代码运行:
$(function() {
jQuery.support.cors = true;
$.connection.hub.url = 'http://localhost:62150/signalr';
$.connection.hub.start()
.done(function() { alert("Now connected!"); })
.fail(function() { alert("Could not Connect!"); });
});
jQuery和jquery.signalr.js加载中为localhost:62150/signalr /集线器与JS响应为localhost:62150/signalr /集线器/谈判_ = 1362243021215返回JSON我办这个吗?浏览器 - 所以它不是缺少脚本或无效路径问题。
我已经试过什么:
- http://coding4life.wordpress.com/2012/03/30/making-cross-domain-calls-in-signalr/ (设置jQuery.support.cors和$ .connection.hub.url)
- 添加自定义页眉在web.config中以“访问 - 控制 - Allow-Origin“value =”*“ (这只适用于IIS?)
- 创建一个http模块,该模块将在每个请求中返回此标头。还试图返回实际域名而不是*。
以上所有的组合。
任何人有任何想法我可以尝试什么?
服务应用程序是MVC和WebAPI的组合(不要认为它有任何区别)。 如果我尝试从同一个域的代码 - 它的工作。
如果您使用的是1.0或更高版本,您是否在服务器上启用了跨域? (它在默认情况下现已停用)
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
以前的版本是预发行版本,SignalR 1.0是第一个RTM版本,所以这不是一个突破性更改;-) – 2013-03-02 19:43:18
FWIW这个更改在发布说明中的“1.0重大更改”中被突出提及。 https://github.com/SignalR/SignalR/blob/master/ReleaseNotes.md是查找每个版本中更改的最佳位置。 – halter73 2013-03-03 08:17:03
我得到了上面的错误,即使我有这行代码。如果我使用RouteTable.Routes.MapHubs()代替,我将得到304.我的代码使用IE10和FF 20,但不使用Chrome 25.0.1364.172。任何想法? – Adamy 2013-03-15 05:02:19
浪费了几个小时,我觉得这是很好的分享我的经验后:
DO访问控制允许来源不添加到您的web.config(是的,它从来没有添加它,但尝试的时候,这是字面上我做的第一次,并在一个简单的jQuery跨域访问测试后留在那里)
RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
工作得很好,集线器RouteTable.Routes.MapConnection<MyConnection>("foo", "/foo", new ConnectionConfiguration { EnableCrossDomain = true });
这工作得很好太为你使用的是什么浏览器中测试这个类继承PersistentConnection
?它支持CORS吗? – 2013-03-02 17:05:18
Chrome。我可以通过ajax跨Web调用Web Api,所以是的。 – Evgeni 2013-03-02 18:17:48