Подстановочный знак CORS Chrome '*' Angular 8? - PullRequest
0 голосов
/ 23 сентября 2019

Я получаю следующее сообщение CORS только в Chrome, Mozilla работает нормально:

Доступ к XMLHttpRequest в 'http://localhost:8002/dataHub/negotiate' из источника' 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: http://172.16.30.79:4200 на Access-Control-Allow-Origin: * Я не знаю.

1 Ответ

1 голос
/ 24 сентября 2019

На вашем 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");
...