我正在尝试为aspnetcore 2.1应用程序配置CORS。我密切关注了文档。我的启动文件已配置如下。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options
.AddPolicy("CorsPolicy", builder =>
{
builder.WithOrigins("http://sitetracker")
.AllowAnyHeader();
}));
services.AddMvc();
services.AddSignalR(o => o.EnableDetailedErrors = true);
services.AddDbContext<BiometricContext>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
app.UseSignalR(routes =>
{
routes.MapHub<BiometricsHub<User>>("/biometricshub");
});
app.UseMvc();
}
我配置了angular项目来启动集线器连接,然后在服务器上等待将一些信息推送到客户端。
var port = 58422;
this.connection = new HubConnectionBuilder()
.withUrl(`http://localhost:${port}/BiometricsHub`)
.configureLogging(LogLevel.Information)
.build();
this.connection.on("ReceiveActiveIdentities", (identities) => {
debugger // Waiting here to receive data
});
this.connection.start().catch(err => {
debugger // Error is "Error" with and error code of 0
console.error(err.toString());
});
调用connection.start时引起错误。
由于我无法弄清楚为什么发生cors错误,所以我想知道代码是否以其他方式被破坏了。我通过在运行菜单中执行以下行来禁用浏览器会话中的cors安全性。
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
一旦CORS被禁用,代码将按预期返回我的客户端回调中的数据。这使我相信CORS配置之外的所有内容都是正确的。
我的配置中缺少什么?我仍然无法使它正常工作。
答案 0 :(得分:1)
我认为我以前在许多配置中都尝试过此操作。但是,似乎并非如此。也许当时app.UseCors()跟在app.UseMvc之后,这显然是不行的。
builder.WithOrigins("http://sitetracker")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
下面的三个允许存在的位置或更多受限制的版本,这些版本允许您根据需要执行特定的操作或方法。