Access-Control-Allow-Origin不允许使用https://demo.example.com来源

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

在ASP.NET Core 2.2 API上,我在ConfigureServices上具有以下内容:

services.AddCors(x => {
  x.AddPolicy("AllowAll", y => y.AllowAnyMethod().AllowAnyOrigin().AllowAnyHeader().AllowCredentials());
}); 

并且在配置方法上,我有:

application.UseCors("AllowAll");

我通过域将API发布到Azure:

https://api-demo.example.com

并且访问API的Web应用程序位于:

https://demo.example.com

但是我在Web应用程序上收到一条错误消息:

Origin https://demo.example.com不允许被Access-Control-Allow-Origin使用。由于访问控制检查,XMLHttpRequest无法加载https://api-demo.example.com/v1.0/posts。无法加载资源:Access-Control-Allow-Origin不允许使用原点https://demo.example.com

AllowAll在这种情况下不能工作吗?我想念什么?

更新

这是我在启动时的订单:

  application.UseHsts(); 

  application.UseCors("AllowAll");

  application.UseAuthentication();

  application.UseHealthChecks("/health");

  application.UseHttpsRedirection();

  application.UseResponseCaching();

  application.UseMvc();  
c# asp.net-core asp.net-core-2.2
2个回答
0
投票

[Access-Control-Allow-Origin标头不支持与*结合使用的通配符Access-Control-Allow-Credentials

来自MDN网络文档https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin#Directives

对于没有凭据的请求,可以将字面值“ *”指定为通配符;该值告诉浏览器允许从任何来源请求代码来访问资源。尝试对凭证使用通配符将导致错误。


0
投票

ASP.NET Core 2.2不支持将AllowAllOriginsAllowCredentialsdocs)都合并:

指定AllowAnyOriginAllowCredentials是不安全的配置,可能会导致跨站点请求伪造。当同时使用两种方法配置应用程序时,CORS服务将返回无效的CORS响应。

A 安全配置将使用WithOrigins(...)限制允许的来源:

services.AddCors(x =>
{
    x.AddPolicy("AllowAll", y =>
        y.WithOrigins("https://demo.example.com")
         .AllowAnyMethod()
         .AllowAnyHeader()
         .AllowCredentials());
}); 
© www.soinside.com 2019 - 2024. All rights reserved.