问题描述
我有一个角度应用程序,一个网关服务(网络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 (将#修改为@)