azure - Azure 上具有 CORS 的 SignalR 无法正常工作

标签 azure signalr cors

我在让 Signalr 支持 Azure 上的 CORS 时遇到问题。我创建了 MSDN Getting Started示例聊天程序,将其部署到 Azure 并确保其正常工作。然后我按照 SignalR Hubs API Guide - JavaScript Client 中有关如何启用 CORS 的说明进行操作。 ,即我将 Startup.cs 更改为使用 Microsoft.Owin.Cors 并设置

map.UseCors(CorsOptions.AllowAll);

并在Win8上使用IE11进行了尝试。

Signalr/IE 正在发送如下所示的 CORS 预检请求:

Request OPTIONS /signalr/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22ommhub%22%7D%5D&clientProtocol=1.3&_=1398784789992 HTTP/1.1
Accept  */*
Origin  https://my.devserver.com
Access-Control-Request-Method   GET
Access-Control-Request-Headers  content-type, accept, x-requested-with
Accept-Encoding gzip, deflate
User-Agent  Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; LCJB; rv:11.0) like Gecko
Host    mytestsite.azurewebsites.net
Content-Length  0
DNT 1
Connection  Keep-Alive
Cache-Control   no-cache

Azure 返回的内容几乎看起来正确:

Response    HTTP/1.1 200 OK
Allow   OPTIONS, TRACE, GET, HEAD, POST
Content-Length  0
Server  Microsoft-IIS/8.0
Public  OPTIONS, TRACE, GET, HEAD, POST
X-Powered-By    ASP.NET
Set-Cookie  ARRAffinity=6115ee2c8e2594676e68d4f0ee51035a2;Path=/;Domain=mytestsite.azurewebsites.net
Date    Tue, 29 Apr 2014 15:23:43 GMT

但浏览器在此之后不会发送任何内容(它应该请求连接)。我怀疑这可能是因为预检响应不包含 Access-Control-Allow-Origin header 。

网络上有很多关于此的相互矛盾的信息。有人在 Azure 上成功获得了与 CORS 配合使用的 SignalR 集线器吗?如果您在那里,请告诉我们您是如何做到的。

最佳答案

我没有时间调试 Signalr 代码,但我找到了一个解决方法。

我通过加载另一个服务(正确处理 CORS)的同一域中的 URL 代理 Signalr 请求。一旦其他服务处理了 OPTIONS 预检请求,IE 就会允许所有进一步的请求发生,而无需预检。

关于azure - Azure 上具有 CORS 的 SignalR 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23375451/

相关文章:

c# - 从 Graph Api 中的特定用户获取托管设备?

php - Azure RSA HSM 签名 - Base64 中的错误字符

SignalR 从外部应用程序向客户端发送消息

c# - 无法连接到集线器类

javascript - Angular 2 JSONP 请求中未发送授权 header

php - 允许 artisan 服务中的 cors

javascript - CORS BLOCKED 'Access-Control-Allow-Origin' Firebase 功能不允许

Azure Graph API - 批准 PIM 请求

azure - 通过 Python SDK 获取规模集中虚拟机的私有(private) IP 地址(规模集中没有公共(public) IP 地址)

c# - SignalR .NET 客户端在第一次连接尝试时抛出 TimeoutException