簡體   English   中英

SignalR、ReactJs 和 Dotnet 核心:CORS 問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM