在ASP.NET Core 2.2 API上,我在ConfigureServices上具有以下内容:
services.AddCors(x => {
x.AddPolicy("AllowAll", y => y.AllowAnyMethod().AllowAnyOrigin().AllowAnyHeader().AllowCredentials());
});
在Configure方法上,我有:
application.UseCors("AllowAll");
我通过域将API发布到Azure:
https://api-demo.example.com
访问API的Web应用程序位于:
https://demo.example.com
但是我在Web应用程序上收到一条错误消息:
来源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();
答案 0 :(得分:2)
Access-Control-Allow-Origin
标头不支持与*
组合使用的通配符Access-Control-Allow-Credentials
来自MDN网络文档https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin#Directives
对于没有凭据的请求,可以将字面值“ *”指定为通配符;该值告诉浏览器允许从任何来源请求代码来访问资源。尝试将通配符与凭据一起使用将导致错误。