SignalR 在通知/协商请求上引发 405 错误



我像这样用角度连接到服务器:

this._hubConnection = new signalR.HubConnectionBuilder()
.withUrl(location.protocol + '//localhost:5000/notify')
.configureLogging(signalR.LogLevel.Information)
.build();

代码或主机没有问题。请求有效。

但随后库会额外调用:

http://localhost:5000/notify/negotiate

然后我得到这个错误:

HTTP 错误 405

客户端中的完整错误是:

Failed to load http://localhost:5000/notify/negotiate: Response to 

预检请求未通过访问控制检查:否 "访问控制允许源"标头存在于请求的上 资源。因此不允许使用原产地"http://localhost:4200" 访问。

除了上述请求外,我在网站上没有 cors 问题。

我在启动.cs中配置了这个。

app.UseCors(builder =>
builder.WithOrigins("http://localhost:4200").AllowAnyMethod
().AllowAnyHeader().AllowAnyOrigin());

该代码适用于所有站点。

如果其余请求有效,为什么会出现突然的 cors 错误?

我可以建议您直接配置Web应用程序的web.config文件,添加以下代码行(它适用于IIS,不确定IIS Express(:

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS,PUT,DELETE,PATCH" />
<add name="Access-Control-Allow-Headers" value="Content-Type, X-Requested-With" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
</system.webServer>

最新更新