SignalR、ReactJs 和 Dotnet Core: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
配置您要允许的所有来源
b.在 javascript 客户端 https://docs.microsoft.com/aspnet/core/signalr/configuration?view=aspnetcore-5.0&tabs=javascript#configure-additional-options
上将 withCredentials
设置为 false
我正在尝试在 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
配置您要允许的所有来源
b.在 javascript 客户端 https://docs.microsoft.com/aspnet/core/signalr/configuration?view=aspnetcore-5.0&tabs=javascript#configure-additional-options
withCredentials
设置为 false