尝试从另一个域调用 signalR,并继续收到此错误:
XMLHttpRequest 无法加载 localhost:62150/signalr/negotiate?_=1362242757692。Access-Control-Allow-Origin 不允许 Origin localhost:4982。
这是我试图运行的代码:
$(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/hubs 以 JS 响应,localhost:62150/signalr/hubs/negotiate?_=1362243021215 如果我在浏览器中运行它会返回 JSON - 所以它不是缺少脚本或无效路径问题。
我试过的:
- http://coding4life.wordpress.com/2012/03/30/making-cross-domain-calls-in-signalr/ (设置 jQuery.support.cors 和 $.connection.hub.url)
- 使用“Access-Control-Allow-Origin”值=“*”在 web.config 中添加自定义标头(这仅在 IIS 中有效?)
- 创建一个 http 模块,该模块将在每个请求上返回此标头。还尝试返回实际域名而不是 *.
以及以上所有内容的组合。
任何人都知道我还能尝试什么?
服务应用程序是 MVC 和 WebAPI 的组合(不要认为它有任何区别)。如果我尝试来自同一域的代码 - 它可以工作。