簡體   English   中英

.NET 5 對預檢請求的響應未通過訪問控制檢查:沒有'Access-Control-Allow-Origin' header 存在於請求的資源上

[英].NET 5 Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

我目前正在嘗試在 .NET Core 5 API 上啟用 CORS。 非預檢,跨域請求工作正常; 但是,所有OPTIONS請求都會導致上述消息。 我的Startup.cs看起來像這樣:

public void ConfigureServices(IServiceCollection services)
{
  services.AddCors(options =>
  {
    options.AddPolicy(corsPolicyName, builder =>
    {
      builder
        .WithOrigins("http://localhost:3000")
        .AllowAnyHeader()
        .AllowAnyMethod()
        .AllowCredentials();
    });
  });
  ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  app.UseHttpsRedirection();
  app.UseRouting();
  app.UseCors(corsPolicyName);
  app.UseAuthorization();
  app.UseEndpoints(endpoints =>
  {
    endpoints.MapControllers();
  });
}

在查看了其他幾個線程之后,我似乎無法弄清楚我的配置有什么問題。 任何幫助將不勝感激。

消除:

.AllowCredentials();

並在 UseRouting 和 UseAuthorization 之間移動 app.UseCors(corsPolicyName):


  app.UseHttpsRedirection();
  app.UseRouting();
app.UseCors(corsPolicyName);
  app.UseAuthorization();

在我的 API 上啟用匿名身份驗證解決了這個問題。 OPTIONS請求不包含憑據,因此不允許匿名身份驗證導致它們被拒絕。

可以通過轉到項目的屬性 > 調試 > 選中“啟用匿名身份驗證”來啟用匿名身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM