.Net cors政策问题
.Net cors policy issue
我有一个 Web 项目:.Net 核心 API 作为后端,React 应用程序作为前端,除 Mozilla 私人选项卡外,所有浏览器都运行良好。当我 运行 我在 Mozilla private window 中的反应应用程序时,出现此错误:
跨源请求被阻止:...原因:CORS 请求未成功
但是如果我的 cors 策略不正确,其他浏览器怎么能毫无问题地连接我的后端? (p.s Mozilla 普通选项卡也可以正常工作)
问题:问题是什么,我该如何解决?
这里有很多相同的问题:)
我现在面临同样的问题。
经过数百次尝试,我 semi-solition:
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
//some other code here...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//some code...
app.UseRouting();
app.UseCors(x => x
.SetIsOriginAllowed(origin => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.Build());
app.UseAuthorization();
//other code
}
在 React 应用中:
export const loginUser = createAsyncThunk(
'user/loginUser',
async function(loginCredentials, {rejectWithValue}) {
try {
const response = await fetch(`https://localhost:5001/usr/loginuser`, {
method: 'POST',
headers: {
'Content-Type': 'text/plain',
'Accept': 'text/plain',
},
body: JSON.stringify({loginCredentials})
});
if (!response.ok) {
throw new Error('Server Error!');
}
//other code
使用这段代码,我遇到了大多数请求失败的情况(在浏览器中看起来像 'fetch canceled'),但大约 30% 的请求成功了。这就是为什么我称它为“半”解决方案。
不知道发生了什么,因为失败和正常的请求是相同的(headers 和 body)。
我有一个 Web 项目:.Net 核心 API 作为后端,React 应用程序作为前端,除 Mozilla 私人选项卡外,所有浏览器都运行良好。当我 运行 我在 Mozilla private window 中的反应应用程序时,出现此错误:
跨源请求被阻止:...原因:CORS 请求未成功
但是如果我的 cors 策略不正确,其他浏览器怎么能毫无问题地连接我的后端? (p.s Mozilla 普通选项卡也可以正常工作)
问题:问题是什么,我该如何解决?
这里有很多相同的问题:) 我现在面临同样的问题。
经过数百次尝试,我 semi-solition:
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
//some other code here...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//some code...
app.UseRouting();
app.UseCors(x => x
.SetIsOriginAllowed(origin => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.Build());
app.UseAuthorization();
//other code
}
在 React 应用中:
export const loginUser = createAsyncThunk(
'user/loginUser',
async function(loginCredentials, {rejectWithValue}) {
try {
const response = await fetch(`https://localhost:5001/usr/loginuser`, {
method: 'POST',
headers: {
'Content-Type': 'text/plain',
'Accept': 'text/plain',
},
body: JSON.stringify({loginCredentials})
});
if (!response.ok) {
throw new Error('Server Error!');
}
//other code
使用这段代码,我遇到了大多数请求失败的情况(在浏览器中看起来像 'fetch canceled'),但大约 30% 的请求成功了。这就是为什么我称它为“半”解决方案。
不知道发生了什么,因为失败和正常的请求是相同的(headers 和 body)。