我在 asp .Net 8 核心项目中构建了 Web API 项目,当我运行 .exe 项目时,我将其发布在文件夹中,一切正常并运行现在正在收听:http://0.0.0.0:5000 信息:Microsoft.Hosting.Lifetime[14] 现在正在收听:https://0.0.0.0:5001当我尝试从在 http://localhost:3000 上运行的 React 项目向 api 发出请求时,它可以找到,但是当我尝试从另一个访问 React 项目时同一网络上的计算机,前 mylocal ip:3000 我收到此错误....从源“http://192.168.88.162:3000”访问“https://localhost:5001/api/auth/login”处的 XMLHttpRequest 已被 CORS 策略阻止:响应预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头.... 在我的后端,这是我的 cors 选项
{builder.WithOrigins("http://localhost:3000", $"http://{localIpAddress}:3000") // Your front-end origin
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
and this is how i make the login request in react app
st response = await axios.post('https://localhost:5001/api/auth/login',
{ email, password },
{
// This ensures that cookies are sent with the request
headers: {
'Content-Type': 'application/json'
},withCredentials : true
});
怎么了
您可以考虑尝试这两种方法:
1.
删除依赖注入(服务)中与Cors相关的代码。
然后,在请求处理管道中的 app.UseHttpsRedirection() 之后添加以下代码:
app.UseCors(options =>
options.WithOrigins("http://localhost:3000", $"http://{localIpAddress}:3000")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
);
如果您在本地运行应用程序以使用 CORS 进行测试,您可以尝试启用匿名身份验证。请参阅文档:
OPTIONS 请求始终是匿名的,服务器不会正确 如果未进行匿名身份验证,则响应预检请求 已启用。
此外,如果您的应用程序托管在 IIS 上,您可以尝试安装 IIS CORS 模块并为应用程序配置 CORS。