如何解决通过间歇性WebApi服务进行呼叫时,SignalR连接失败
我有一个角度应用程序,一个网关服务(网络api)和一个asp.net核心服务(其中存在SignalR集线器)。我正在尝试通过网关从角度应用程序连接到SignalR集线器,并且请求失败并出现以下错误:
CORS策略已阻止从来源“(UI网站)”访问“(网关)/ signalR / connect / negotiate”处的XMLHttpRequest:对预检请求的响应未通过访问控制检查:“响应中的Access-Control-Allow-Credentials标头为”,当请求的凭证模式为“ include”时,标头必须为“ true”。 XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。
// UI代码: 这是我要从角度应用发布的请求。
const connection = new signalR.HubConnectionBuilder()
.withUrl(https://gateway/signalr/connect)
.withAutomaticReconnect()
.build();
//网关代码: https:// gateway / signalr / connect是网关服务中的post api。
在网关发布api中,我正在连接到Signalr集线器,如下所示: https:// localhost:19081 /(myservice)/ SignalR /(myHub)
// SignalR服务: 还在我的信号发送器启动中添加了以下cors政策:
services.AddCors(options => options.AddPolicy("SignalRPolicy",builder =>
{
builder.AllowAnyHeader()
.AllowCredentials()
.AllowAnyMethod()
.WithOrigins(<allowedorigins>);
}));
app.UseCors("SignalRPolicy");
app.UseAzureSignalR(routes =>
{
routes.MapHub<HubClass>("/<myhub>");
});
如果我直接从UI调用SignalR集线器-该请求正在传递并成功连接到signalr。
此处,网关服务和我的信号器服务都托管在azure服务结构上。要求是,所有来自UI的调用都需要通过网关。
请让我知道如何进行这项工作。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。