получение реестра npm с угловым httpClient, вызывающим CORS - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь использовать угловой httpClient для доступа к реестру npm для получения определенных зависимостей пакета

Когда я выполняю запрос, я получаю сообщение об ошибке CORS

Доступ к XMLHttpRequest в 'https://registry.npmjs.org/async/2.0.1' от источника 'http://localhost:4200' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». http://registry.npmjs.org/async/2.0.1

this.httpClient.get(requestUrl).pipe(catchError(this.handleError)).subscribe((result: any) => {
    console.log(result);
});`

Нужно ли добавлять заголовки для запроса, чтобы это работало?

1 Ответ

0 голосов
/ 29 октября 2019

Если вы разрабатываете локально, вы не можете сильно изменить свой код, потому что реестр npm будет блокировать все, что вызывается с localhost. Чтобы это работало, вы можете использовать прокси-серверы CORS, например https://cors -anywhere.herokuapp.com

Таким образом, URL вашего запроса изменится на https://cors - где угодно. herokuapp.com/https://registry.npmjs.org/async/2.0.1

и вы можете изменить свой код на что-то похожее:

if(!environment.production) {
    const corsProxy = 'https://cors-anywhere.herokuapp.com/'
    requestUrl = `${corsProxy}${requestUrl}` 
}

this.httpClient.get(requestUrl).pipe(catchError(this.handleError)).subscribe((result: any) => {
    console.log(result);
});`
...