已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:不存在“Access-Control-Allow-Origin”标头

问题描述 投票:0回答:1

我在 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
      });

怎么了

c# reactjs asp.net asp.net-core cors
1个回答
0
投票

您可以考虑尝试这两种方法:

1.

删除依赖注入(服务)中与Cors相关的代码。

然后,在请求处理管道中的 app.UseHttpsRedirection() 之后添加以下代码:

app.UseCors(options => 
    options.WithOrigins("http://localhost:3000", $"http://{localIpAddress}:3000")
    .AllowAnyHeader()
    .AllowAnyMethod()
    .AllowCredentials()
);

如果您在本地运行应用程序以使用 CORS 进行测试,您可以尝试启用匿名身份验证。请参阅文档

OPTIONS 请求始终是匿名的,服务器不会正确 如果未进行匿名身份验证,则响应预检请求 已启用。

此外,如果您的应用程序托管在 IIS 上,您可以尝试安装 IIS CORS 模块并为应用程序配置 CORS。

请参阅此https://stackoverflow.com/posts/63706042/timeline

© www.soinside.com 2019 - 2024. All rights reserved.