DotNet 6.0下SignalR跨域CORS错误问题求助
.NET 6环境下SignalR跨域CORS错误解决方案求助
我注意到这个问题已被多次提及,但所有旧解决方案在DotNet 6.0环境下均无效。
我有部署在Server A的SignalR JS客户端,SignalR服务端部署在拥有固定IP的Server B,两台服务器均使用HTTPS。客户端连接服务端时出现CORS错误,提示:Error: Failed to complete negotiation with the server: Error。
客户端连接代码
socket= new signalR.HubConnectionBuilder() .withUrl("http://X.X.X.X/MyHub") .configureLogging(signalR.LogLevel.Information) .build();
服务端CORS配置(Server B的Program.cs)
服务器为Ubuntu 20,Web服务基于ASP.NET C# 6.0开发,已配置CORS策略:
builder.Services.AddCors(options => options.AddPolicy("CorsPolicy", policyBuilder => { policyBuilder .AllowAnyMethod() .AllowAnyHeader() .AllowAnyOrigin() .SetIsOriginAllowed(_ => true); // allow any origin }));
Nginx配置
Upstream配置
upstream websocketCloud { server 127.0.0.1:9771; }
CORS相关配置
# Wide-open CORS config for nginx location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; # # Custom headers and headers various browsers *should* be OK with but aren't # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; # # Tell client that this pre-flight info is valid for 20 days # add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } if ($request_method = 'POST') { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; } }
现寻求解决该跨域CORS错误的有效方案。
内容的提问来源于stack exchange,提问作者Andrew Simpson
相关产品推荐
相关产品推荐

