我正在尝试为我的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错误,所以我想知道代码是否以其他方式损坏了。我通过在run菜单中执行以下行,在浏览器会话中禁用了cors安全性。
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
一旦CORS被禁用,代码就会像预期的那样在我的客户端回调中返回数据。这让我相信CORS配置之外的所有东西都是正确的。
我的配置中缺少什么?我还是不能让它工作。
发布于 2018-08-13 07:58:25
我想我以前已经在我的许多配置中尝试过。然而,情况似乎并非如此。也许在当时,app.UseCors()遵循了app.UseMvc,这显然是一个禁忌。
builder.WithOrigins("http://sitetracker")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
它允许的以下三个版本需要到位或更受限制的版本,这些版本允许您的特定操作或方法根据需要执行。
https://stackoverflow.com/questions/51813458
复制相似问题