Угловые 5 выборочных данных из заголовка Api- No Access-Control-Allow-Origin

Я хочу получить данные из API. Для получения данных вам нужно пройти следующие условия: U вам нужно использовать токен. Этот токен действителен только для определенного публичного IP. вам нужно использовать схему аутентификации канала-носителя для получения данных. Теперь я хочу попробовать это. И запустил мое приложение локально с помощью следующего кода:

 public static USERTOKEN: string = '***';

  constructor(private http: HttpClient) {
  }

  ngOnInit() {
    const httpOptions = {
      headers: new HttpHeaders({
        'Authorization': ' Bearer ' + AppComponent.USERTOKEN
      })
    };
    this.http.get('https://developer.clashofclans.com/clans/%2388GL8202', httpOptions).subscribe(data => {
      console.log(data);
    });
  }
}
`

Конечно, я добавил httpClientModule в качестве импорта в мой класс модуля. Но я получаю следующую ошибку: Failed to load resource: the server responded with a status of 403 (Forbidden) localhost/:1 Failed to load https://developer.clashofclans.com/clans/%2388GL8202: 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.

Что я делаю неправильно? Аутеризация на предъявителя неверна?

3 ответа

Решение

Я немного опоздал, но решение было так: запустите приложение Angular с proxy-config.json с целевым URL-адресом API:

  "/v1": {
    "target": "https://api.clashofclans.com",
    "secure": true,
    "changeOrigin": true
  }

Затем в package.json добавьте параметры прокси для сценария "start":

"scripts": {
  "ng": "ng",
  "start": "ng serve --proxy-config proxy.conf.json",
  "build": "ng build --prod",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
}

Ошибка, которую вы делаете: 1. вы пытаетесь вызвать публичный API из вашей локальной среды. Это видно из этого сообщения об ошибке.

Поэтому http://localhost:4200/ не имеет доступа. Ответ имел HTTP-код состояния 403.

Это невозможно для программного доступа в вашем сценарии с локального хоста из-за проблем с разрешением CROS.

Переместите тестовый код в общедоступный домен, а затем внесите белый список в свой домен.

Кажется, не является проблемой переднего плана, однако NO Access-Control-Allow-Origin ошибка может иметь разные причины. Я думаю, что вы должны управлять им в своем внутреннем коде или конфигурации вашего веб-сервера. Например, в Apache, если у вас есть .htaccess файл вы можете управлять своими разрешениями прямо там. Также убедитесь, что вашему бэкэнду не нужны дополнительные заголовки для распознавания его клиентов.

Другие вопросы по тегам