asp.net-mvc – Chrome 27中SignalR和跨域请求的问题
|
编辑:这显然只是Chrome中的一个问题,它在FF和IE中运行良好 Chrome版本:27.0.1453.116 我在localhost:13371上有一个简单的JS / HTML站点,我正在尝试访问localhost:13371上的SignalR中心. 无论何时发出请求,我都会收到以下错误:
我已经尝试过了: >在Application_Start上启用SignalR上的跨域: RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
>在SignalR服务器的Web.Config中启用跨域: <system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
>在JavaScript中设置信号器中心的连接URL: $.connection.hub.url = 'http://localhost:13370/signalr/hubs'; >在jQuery中启用CORS: $.support.cors = true; >在Application_BeginRequest中手动设置响应头: protected void Application_BeginRequest(object sender,EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
//These headers are handling the "pre-flight" OPTIONS call sent by the browser
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods","GET,POST,PUT,DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers","*");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age","1728000");
HttpContext.Current.Response.End();
}
}
以上都没有,也没有上述任何组合起作用. 附加信息: >这两个站点都在Windows 7上的IIS中运行 解决方法编辑:我现在找到了两个解决方案……方法1.摆脱你可能不需要的垃圾: 正如我在Stack Overflow question中发现的那样,基本上我在上面列出的“我尝试过的东西”中添加的几乎所有内容都是不必要的.修复步骤: >删除我在上面尝试过的所有内容.这意味着在Web.Config或其他地方(如Global.asax)没有指定自定义标头,没有自定义jquery设置等. … 而已.这可能是最好的解决方案,也是我最终使用的解决方案. 方法2.如果您在Chrome中仍然遇到问题,请使用jsonp: 如果你在Chrome中仍然遇到这样的问题,可以使用jsonp让协商脚本正确下载…将以下内容添加到我的JavaScript中心开始解决问题: //detect chrome
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
//set the connection url.
$.connection.hub.url = 'http://localhost:13370/signalr/hubs';
//use jsonp if chrome
$.connection.hub.start({
jsonp: isChrome
});
可能有一种更好的方法来测试浏览器功能并相应地设置jsonp ……看着用户代理感觉很脏……但是这解决了我在过渡时期的问题.我希望这有助于其他人. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在web.config或数据库中存储配置设置
- 如何在ASP.NET应用程序中避免SQL注入攻击?
- asp.net-core – ASP.NET Core WebAPI默认路由不起作用
- asp.net – “HttpContext.Current”属性和相关事物的交叉线
- 用于属性的ASP.NET MVC编辑器模板
- asp.net-mvc – 数据库中已经有一个名为“AspNetRoles”的对
- asp.net – MVC4 – ContextDependentView – 这是什么意思
- asp.net – 当用户关闭浏览器等待长时间运行的Web服务调用时
- ASP.NET / VB中的jsFiddle是否相当?
- asp.net – 在根站点下托管的应用程序中配置子目录验证模式
- asp.net-mvc – ASP.NET MVC框架中的MVVM和Model
- asp.net-mvc – RedirectToAction不工作
- asp.net – 授权web.config中的属性对授权节点
- asp.net:控件/页面的页面生命周期顺序与其中的用
- asp.net-mvc – 发现MVC项目中是否使用views / p
- asp.net – 加密ASP .NET 2.0和SQL Server 2005中
- asp.net – 加密cookie中的会话ID(或其他身份验证
- asp.net – 未捕获TypeError:无法读取未定义的属
- ASP.NET MVC HTML Helpers是否被高估?
- asp.net-mvc – TDD:在ASP.NET MVC 3中测试Data
