Угловое 5-кратное значение заголовка HttpClient Access-Control-Allow-Origin - PullRequest
0 голосов
/ 24 мая 2018

У меня есть приложение Angular 5, в котором я использую простой запрос GET

public getData(url: any): Observable<any> {
    return this.HttpClient.get(url).
        .map((res) => res)
}

, когда я отправляю запрос на сервер с протоколом http - все работает нормально (и на вкладке сети моего браузера Chromium я вижу только одинAccess-Control-Allow-Origin: http://127.0.0.1:4200), но если я отправляю запрос по протоколу https на тот же сервер - у меня появляется ошибка:

The 'Access-Control-Allow-Origin' header contains multiple values 
'http://127.0.0.1:4200, *', but only one is allowed.

Если открыть вкладку сети - там мы видим действительно дваAccess-Control-Allow-Origin:

Access-Control-Allow-Origin: http://127.0.0.1
Access-Control-Allow-Origin: *

Как оставить только один источник и почему это происходит при использовании https? Теперь я не могу изменить CORS на бэкэнде: (

С серверасторона - GeoServer на nginx.

Моя конфигурация nginx CORS:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';

1 Ответ

0 голосов
/ 24 мая 2018

включите это в ваш файл веб-конфигурации.

   <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type, X-Your-Extra-Header-Key" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE,OPTIONS" />
          </customHeaders>
        </httpProtocol>

Дайте мне знать, на каком языке вы написали свои функции API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...