SignalR ping失败,出现CORS Access Control Allow Origin错误



在我的项目中,negotiateconnectstartAPI调用都包含所需的access-control-allow-origin头。然而,一旦SignalR调用ping方法,就会抛出以下错误:

Access to XMLHttpRequest at 'https://backend.url/signalr/signalr/ping&_=1643292246714'
from origin 'https://frontend.url' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已经根据微软的文档修改了Startup.cs文件。在旧版本中,我使用了MapSignalR方法。

public class Startup {
public void Configuration(IAppBuilder app) {
// Branch the pipeline here for requests that start with "/signalr"
app.Map("/signalr", map =>
{
// Setup the CORS middleware to run before SignalR. By default this will allow all origins.
map.UseCors(CorsOptions.AllowAll);
map.RunSignalR();
});
app.UseCors(CorsOptions.AllowAll);
}
}

然而,这一变化并没有产生任何影响。CORS错误仍然存在。知道这里出了什么问题吗?

我在用微软。AspNet。SignalR 2.4.2和Microsoft。Owin。Cors 4.2.0 with。NET Framework 4.8。

我也不明白,为什么它在URL中调用/signar/signer。

您应该像那样配置CORS(订单很重要(:

services.AddCors(options =>
{
options.AddPolicy("CorsPolicy", builder => builder.WithOrigins(YourOriginsHere)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.SetIsOriginAllowed((host) => true));
});

注意:避免将*放在原点中,最好创建一个具有可能原点的字符串数组,最好是从配置中读取。

更新:For。NET Framework查看如何从本Microsoft文档中启用CORS。

实际问题是我使用的客户端库中的一个错误。解决方案是更新我的客户端npm包signalr-asp-net。我仍然有1.0.0版本,并更新到1.0.3。现在问题已经解决了。

相关内容

最新更新