【问题标题】:SignalR across domainsSignalR 跨域
【发布时间】:2013-01-23 20:53:59
【问题描述】:

我正在尝试获取跨域工作的基本示例,但我无法让它工作。据https://github.com/SignalR/SignalR/issues/6 的某人说,他通过添加Access-Control-Allow-Origin 标头使其工作。

基本上,我已经向 mvc 3 应用程序添加了一个集线器,在 web.config 中添加了上述标头,并创建了一个页面来发送消息。此设置工作正常。 接下来,我在页面上使用相同的客户端 javascript 创建了一个不同的 Web 应用程序,但使用以下方法将 url 设置为不同的服务器:

$.connection.hub.url = 'http://www.myserver.com/signalr';

一旦我使用远程 URL,它就会停止工作。

如何让 SignalR 跨域工作?

更新: 一些补充信息,上述方法适用于 chrome 和 firefox,但 IE9 不喜欢它...

【问题讨论】:

  • 你测试的是哪个浏览器?并非所有浏览器都支持 Access-Control-Allow-Origin 标头。
  • 我一直在用IE9和Chrome

标签: asp.net-mvc-3 signalr


【解决方案1】:

我使用一个简单的测试项目和 Internet Explorer 9 让它工作,但这并不容易,首先我遇到了你描述的相同问题。我想你快到了,你的 JavaScript 中只缺少以下行:

jQuery.support.cors = true;

告诉 jQuery 进行跨域调用。看起来很简单,但真的很难找到;-)

我在blog post 中解释了我所做的所有步骤,因为到目前为止我还没有找到任何关于此主题的现有信息。

如果还有其他问题,请告诉我。我有一个在 Internet Explorer 9 中运行的工作测试项目,可以发送给您。

【讨论】:

  • 谢谢,成功了!它确实在永远框架的背景中引发访问被拒绝异常(准确地说是var $ = window.parent.jQuery),并且用户会收到一条弹出消息以允许cors,但它会发送和接收消息!
  • 奇怪,我没有收到任何弹出消息...这是在 IE 还是其他浏览器中?很高兴它有效:-)
  • 这确实在 IE9 中。我希望他们很快在 SignalR 中获得官方跨域支持 :)
  • 这篇博文是在 mate 上发现的,为我省去了很多麻烦!谢谢。
猜你喜欢
  • 2021-11-16
  • 1970-01-01
  • 2013-06-24
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 2017-10-31
相关资源
最近更新 更多