[英]SignalR, ReactJs and Dotnet Core: CORS Issue
我正在嘗試在 Dotnet Core + ReachtJS web 應用程序中實現 SignalR。 在調用 API 並建立 SignalR 連接時,我遇到了 CORS 問題。
ReactJS SignalR 連接代碼:
useEffect(() => {
const newConnection = new HubConnectionBuilder()
.withUrl('https://myapi.com/hubs/signalrconn')
.withAutomaticReconnect()
.build();
setConnection(newConnection);
}, []);
場景 1:以下配置適用於特定服務器。 我能夠建立 SignalR 連接。 下面是我的 API 的配置代碼:
services.AddCors(options =>
{
options.AddPolicy("prod",
builder => builder.WithOrigins("https://reactapp.com")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
});
app.UseCors("prod"); // This line is part of Configure method.
上述方法的問題:這只適用於單機,即reactapp.com。 我想公開啟用 CORS。 這樣我就可以在任何網絡服務器上部署我的 react webapp 並且它可以訪問 webapi。 所以,我改變了我的 CORS 配置:
services.AddCors(options => options.AddPolicy("AllowAll", builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin()
.AllowCredentials();
}));
但它會給我以下錯誤。
如何為來自任何網絡服務器的 SignalR 連接啟用 CORS?
編輯:下面的反應代碼更改對我有用。
useEffect(() => {
const newConnection = new HubConnectionBuilder()
.withUrl('https://myapi.com/hubs/signalrconn', {
withCredentials: false
})
.withAutomaticReconnect()
.build();
setConnection(newConnection);
}, []);
你有幾個選擇。
一個。 通過WithOrigins
配置您希望允許的所有來源
灣。 在withCredentials
客戶端https://docs.microsoft.com/aspnet/core/signalr/configuration?view=aspnetcore-5.0&tabs=javascript#configure-additional-options 上將 withCredentials設置為 false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.