【发布时间】:2014-01-30 12:29:59
【问题描述】:
我认为关于 Access-Control-Allow-Origin 的主要问题。但是当我按照given documentation 中的定义配置Web API 项目时,它仍然无法在chrome 和firefox 中运行,但在IE 中运行良好(这是关于IE 认为localhost 不是跨域的,AFAIK)。我尝试了不同的方法让它工作,但没有结果。
我把示例项目放到github repository。项目非常简单。有两个应用程序在跨域工作。这是一个非常简单的聊天应用程序,就像在信号器示例中一样。
您必须在客户端 javascript 文件中更改 api host 的值: https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApp/Scripts/app/chat.js#L2
当你在mvc项目中打开Chat页面时,会有两个对api应用的请求
1- 常规 ajax 请求(工作正常)
2- Signalr 协商请求(已取消)
而且我认为浏览器不会禁用 CORS,因为如果它禁用,则不会对服务器造成影响。所以我认为这与浏览器有关,但与浏览器禁用(其他)无关。
详细信息在存储库中 自述文件:https://github.com/yusufuzun/WebApiSignalR/blob/master/README.md 提琴手结果:https://github.com/yusufuzun/WebApiSignalR/blob/master/FiddlerResults
它的坏处也是服务器返回 500 并出现此错误: System.InvalidOperationException: 'chat' Hub 无法解析。
哪个中心名称也是聊天。 https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApi/Hubs/ChatHub.cs#L10
您可以在项目中以不同的方式为 Web Api 启用 CORS 以进行测试。每一个都给出了关于 XMLHttpRequest Access-Control-Allow-Origin 的不同错误。
我评论了他们,所以你可以取消评论并为每个人做测试:
https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApi/Global.asax.cs#L24 https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApi/App_Start/WebApiConfig.cs#L14 https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApi/App_Start/WebApiConfig.cs#L16 https://github.com/yusufuzun/WebApiSignalR/blob/master/ChatApi/Controllers/ChatController.cs#L17
那么这里发生了什么?
【问题讨论】:
标签: asp.net-web-api cors signalr-hub signalr.client