CORS Chrome通配符'*'Angular 8?

Posted

技术标签:

【中文标题】CORS Chrome通配符\'*\'Angular 8?【英文标题】:CORS Chrome wildcard '*' Angular 8?CORS Chrome通配符'*'Angular 8? 【发布时间】:2020-01-23 20:52:43 【问题描述】:

我只在 Chrome 中收到以下消息 CORS,Mozilla 工作正常:

在“http://localhost:8002/dataHub/negotiate”访问 XMLHttpRequest 来自原点 'http://172.16.30.79:4200' 已被 CORS 阻止 策略:对预检请求的响应未通过访问控制 检查:“Access-Control-Allow-Origin”标头的值 当请求的凭据时,响应不能是通配符“*” 模式是“包括”。发起请求的凭证模式 XMLHttpRequest 由 withCredentials 属性控制。

服务器返回给我这些头文件:

Access-Control-Allow-Credentials: false
Access-Control-Allow-Headers: x-requested-with,Vary,Server,Access-Control-Allow-Origin,Access-Control-Allow-Credentials,Access-Control-Allow-Headers,Access-Control-Allow-Methods,Date
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Vary, Server, Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Headers, Access-Control-Allow-Methods, Date
Content-Type: application/json; charset=utf-8
Date: Mon, 23 Sep 2019 18:32:09 GMT
Server: Microsoft-IIS/10.0
Vary: Origin
X-Content-Type-Options: nosniff

我使用 SignalR 的连接是:

this.connection = new signalR.HubConnectionBuilder()
      .configureLogging(signalR.LogLevel.Debug)
      .withUrl("http://localhost:8002/dataHub")
      .build();

 this.connection
      .start(withCredentials: false)
      .then(() => 
);

如您所见,服务器发送一个标头:

Access-Control-Allow-Origin: *

在 Mozilla 我看到 Access-Control-Allow-Origin: http://172.16.30.79:4200

为什么 Chrome 会在 Access-Control-Allow-Origin: * 上替换 Access-Control-Allow-Origin: http://172.16.30.79:4200 我不知道。

【问题讨论】:

【参考方案1】:

在你的Configuration

//Configure CORS policy
services.AddCors(options =>

  options.AddPolicy("CorsPolicy",
  builder => builder.WithOrigins("http://172.16.30.79:4200")
  .SetIsOriginAllowed((host) => true)
  .AllowAnyMethod()
  .AllowAnyHeader()
  .AllowCredentials());
);

然后在Configure:

//Cors Policy
app.UseCors("CorsPolicy");

【讨论】:

以上是关于CORS Chrome通配符'*'Angular 8?的主要内容,如果未能解决你的问题,请参考以下文章

CORS 在 chrome 中无法与 Angular 2 一起使用

Chrome 90 在 CORS 预检中向 Angular localhost 应用添加 https

少数用户的 Chrome CORS 阻塞和少数用户的工作正常:Spring boot + Angular App

在Chrome中取消了飞行前OPTIONS请求(已支持CORS)

CORS Access-Control-Allow-Headers 通配符被忽略?

chrome 中的 Angularjs 应用程序中的 CORS 错误访问 .NET Web Api