В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». - PullRequest
0 голосов
/ 04 мая 2018

Я использую Angular 5 и пытаюсь запустить следующий веб-сервис

 getMethod() {
let headers = new Headers();
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
headers.append('Access-Control-Allow-Headers', 'Content-Type');

headers.append("Authorization", "Basic " + btoa("username:password"));
headers.append("Content-Type", "application/x-www-form-urlencoded");

let options = new RequestOptions({ headers: headers });

const params = new HttpParams({
  fromObject: {
    'startDateTime': '28-04-2018 00:00:00',
    'endDateTime': '28-04-2018 00:00:00',
  }
});
return this.http.get("https://localhost:8443/test?" + params, options).map(
  (response: Response) => {
    const data = response.json();
    return data;
  }
);

}

и каждый раз, когда я получаю следующую ошибку

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 403.

Я использовал обходной путь для решения этой проблемы (установка chrome-плагина), но он не будет работать на производстве, поэтому мне нужно решение, потому что я попробовал много рекомендаций, но без каких-либо хороших результатов, что мне нужно (1 - отправка имени пользователя и пароль с использованием базовой аутентификации, 2 - отправка параметров, 3 - решение проблемы кросс-происхождения)

Ответы [ 2 ]

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

попробуйте это ниже:

headers.append('Content-Type', 'application/x-www-form-urlencoded');

headers.append('Accept', 'text/plain');

А в бэкэнд добавить:

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Credentials: true'); 
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Content-Type: text/plain');
0 голосов
/ 04 мая 2018

Вам нужно добавить заголовки Access-Control-Allow-Origin, -Methods, -Headers к ответу сервера - так, чтобы код бэкэнда (не угловой код фронтэнда)!

...