CORS 问题 - 开发和生产之间

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

当我尝试使用我的 C# API 运行我的 ReactJS 应用程序时,当此 API 使用 HTTPS 托管在我的本地 IIS 服务器上时,我遇到了 CORS 问题。

这是我的设置详细信息

  • 前端:ReactJS,TailWind CSS
  • 后端:C# .Net 8、SQL DB、托管在本地计算机 IIS 上。
  • Auth0 作为 IDProvider
  • 我有自己的域名,比如说“MyDomain.ca”
  • 在 IIS 上安装 SSL 证书

当我在开发计算机上工作并使用也在我的开发计算机“https://localhost:7248/api”上运行的 API 时,Web 应用程序按假设运行。 CORS 不会阻止我。

当我更改我的域的 API URL https://MyDomain.ca/API CORS 一直困扰着我。

我已经使用API安装了Swagger,因此我可以调用API。我可以用它登录,没有任何问题。 Swager 回复我:

access-control-allow-credentials: true 
access-control-allow-origin: https://MyDomain.ca  
cache-control: no-cache,no-store  
content-type: application/json; charset=utf-8  
date: Fri,06 Dec 2024 19:15:11 GMT  
expires: Thu,01 Jan 1970 00:00:00 GMT  
pragma: no-cache  
server: Microsoft-IIS/10.0  
vary: Origin  
x-firefox-spdy: h2  
x-powered-by: ASP.NET

但是当我尝试使用从 http://localhost:5173/ 运行的 React 应用程序进行登录时,我收到了与浏览器控制台中类似的错误

XHR OPTIONS https://myAuth0Domain.us.auth0.com/authorize?...blah.. CORS Missings Origin

还有:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at

我已经在相应的设置Auth0应用程序管理器中设置了我的域名, 应用程序登录 URI:https://MyDomain.ca 允许的回调 URL:https://MyDomain.ca/api/callback,http://localhost:5173/api/auth/callback 允许的 Web 来源:https://MyDomain.ca,http://localhost:5173

我还在我的 .net API 中设置了原点,如下所示:

      // [More code]

      builder.Services.AddHttpClient();
      builder.Services.AddCors(options =>
      {
          options.AddPolicy("AllowSpecificOrigin", corsBuilder =>
                  corsBuilder.WithOrigins("http://localhost:5173", 
                                          "https://MyDomain.ca")
                              .AllowAnyHeader()
                              .AllowAnyMethod()
                              .AllowCredentials());
      });
      // [More code]
      app.UseCors("AllowSpecificOrigin");
      // [More code]

我认为

access-control-allow-origin: https://MyDomain.ca  
当我尝试从 Web 应用程序登录时,标头中缺少

。但我不知道该怎么做才能解决这个问题。

我需要一些帮助来解决我的问题。

谢谢 雨果

c# reactjs cors auth0
1个回答
0
投票

我多次遇到这个问题,结果发现它与 CORS 无关,而是我的控制器代码中的错误

   [HttpGet("TestConnect")]
   public async Task<IActionResult> TestConnect()
   {
       try
       {
         // Your Code
       }
       catch (Exception ex)
      {
          return Ok(new { Message = $"{ConnString} {ex.Message}  
          {ex.InnerException}" });
      }

       return Ok(new { Message = $"Working {ConnString}" });
    }
© www.soinside.com 2019 - 2024. All rights reserved.