【发布时间】:2013-02-17 02:19:17
【问题描述】:
尝试从另一个域调用 signalR,并不断收到此错误:
XMLHttpRequest 无法加载 本地主机:62150/signalr/negotiate?_=1362242757692。起源 Access-Control-Allow-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)
- 在 web.config 中使用“Access-Control-Allow-Origin”值“*”添加自定义标头 (这只适用于 IIS 吗?)
- 创建一个 http 模块,该模块将在每个请求上返回此标头。还尝试返回实际域名而不是 *。
以及以上所有内容的组合。
有人知道我还能尝试什么吗?
服务应用是 MVC 和 WebAPI 的组合(不要认为它有任何区别)。 如果我尝试来自同一域的代码 - 它可以工作。
【问题讨论】:
-
你用什么浏览器来测试这个?是否支持 CORS?
-
铬。我可以通过 ajax 对 Web Api 进行跨域调用,所以是的。
标签: asp.net-mvc asp.net-web-api signalr