我在我的 asp.net mvc4 webapi 项目中使用信号器(版本 2.0.0),
这里允许跨源资源共享,我在webconfig文件中使用以下代码
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<remove name="X-Powered-By" />
</customHeaders>
这是用于从服务器接收数据的客户端信号器代码:
$(function () {
var nodePublishingHub = $.connection.nodePublishingHub;
nodePublishingHub.client.NodePublished = onNewMessage;
$.connection.hub.error(function (error) {
$('#messages').append('<li>' + error + '</li>');
});
$.connection.hub.url = "http://localhost:5441/signalr";
$.connection.hub.start({ transport: 'longPolling' })
});
我正在使用以下代码通过信号器启用 CORS,
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
EnableJSONP = true
};
map.RunSignalR(hubConfiguration);
});
}
然而出现错误,
XMLHttpRequest cannot load http://localhost:5441/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%…name%22%3A%22nodepublishinghub%22%7D%5D&clientProtocol=1.3&_=1386654835296. The 'Access-Control-Allow-Origin' header contains the invalid value 'null, *'. Origin 'null' is therefore not allowed access.
我该如何解决这个问题?请帮忙。
我尝试了以下,
HttpContext.Current.Response.Headers.Add("Access-Control-Allow-Origin", "*");
最佳答案
不要修改信号器原始源代码。何时更新您的代码将停止工作。
更喜欢这个:
$.connection.hub.start({ withCredentials: false }).done(function () {
//...
}
start({ withCredentials: false })
而不是典型的 start()
会做的工作。您可以验证here (GitHub issue tracker)官方支持。
关于asp.net-mvc-4 - 自定义 header 和 Signalr : Asp.Net MVC4 Web Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20487351/