Угловые 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
файл вы можете управлять своими разрешениями прямо там. Также убедитесь, что вашему бэкэнду не нужны дополнительные заголовки для распознавания его клиентов.