SignalR、ASP.NET 5 和 CORS
Posted
技术标签:
【中文标题】SignalR、ASP.NET 5 和 CORS【英文标题】:SignalR, ASP.NET 5 and CORS 【发布时间】:2015-08-14 05:51:00 【问题描述】:我正在尝试将 SignalR 与我的 MVC6 应用程序一起使用,但遇到了 CORS 问题。
首先:如果我在http://localhost:1234/index.html(与我的网络应用程序相同)上托管我的 index.html 文件,它就可以工作。 但是当我在其他地方托管它时(例如在 file:///C:/Users/me/Documents/index.html 中),我有这个错误:
请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许访问 Origin 'null'。
当然,我尝试启用 CORS,这是我的启动文件:
public class Startup
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
services.AddSignalR();
services.AddCors();
var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();
policy.Origins.Add("*");
policy.Headers.Add("*");
policy.Methods.Add("*");
services.ConfigureCors(x => x.AddPolicy("allowall", policy));
public void Configure(IApplicationBuilder app)
app.UseCors("allowall");
app.UseSignalR();
app.UseMvc();
但是现在,我又遇到了一个错误:
不能在“Access-Control-Allow-Origin”中使用通配符“*” 当凭证标志为真时标头。因此,原点“空”是 不允许访问。
然后我尝试:
policy.SupportsCredentials = false;
但仍然出现同样的错误。
我该怎么办?
【问题讨论】:
投反对票。这个问题的标题有点误导。应该说得更清楚,那就是关注文件服务而不是 http 服务 【参考方案1】:在 SignalR 团队中看到,这是在 http://localhost:port 上工作,但不是在 file:///C:/Users/me/Documents/index.html 上,这是正常的。
【讨论】:
以上是关于SignalR、ASP.NET 5 和 CORS的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core的实时库: SignalR简介及使用
《ASP.NET SignalR系列》第一课 认识SignalR
如何从我的 ASP.NET Core 5 Web 应用程序中的 SignalR 操作中解决错误“无法访问已释放的上下文实例”?
ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接