Как решить, заголовок «Access-Control-Allow-Origin» присутствует на запросах Ошибка в Angular 2?

Я получаю эту ошибку:

XMLHttpRequest не может загрузить https://heroku-app-php.herokuapp.com/. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». ПроисхождениеHTTP: // локальный: 8100Поэтому не допускается доступ.

test.service.ts

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()
export class testService {
constructor (
private http: Http
) {}

getUser() {
var tries = this.http.get(`https://heroku-app-php.herokuapp.com/`)
.map((res:Response) => res.json());
console.log("Res done");
return tries;
}

}

test.component.ts

import { Component } from '@angular/core';

import { testService } from './test.service';

@Component({
selector: 'home-page',
template: `
<div>
<button (click)="loadUser()">Load profile</button>
{{ profile | json }}
</div>
`
})
export class testComponent {
constructor(private testService: testService) {}
profile = {};

loadUser() {
this.testService.getUser().subscribe(data => this.profile = data);
}
}

0

Решение

По умолчанию ни одна сторона сервера не разрешает запросы от внешних доменов, вам следует включить cors. Прочитайте эту статью.

https://enable-cors.org/server_expressjs.html

И помните, что cors включается, прежде чем передать что-либо app.use,

1

Другие решения

Вам нужно добавить ‘withCredentials’ в качестве заголовка запроса.

Что-то вроде :

this.http.get(`https://heroku-app-php.herokuapp.com/`,{ 'withCredentials': true})

Подробнее об этом вы можете прочитать Вот

0

Это происходит, когда приложение работает не на сервере, а на другом сервере.

Я предполагаю, что вы пытаетесь сделать запрос API во время работы на локальном компьютере с помощью ng serve, Это, однако, будет прекрасно работать, когда код загружен на тот же сервер, что и внутренний API.

https://github.com/angular/angular-cli/issues/2872

На данный момент есть билет для обеспечения поддержки CORS через Angular-cli, но до тех пор вы можете это исправить, используя обратный прокси или промежуточное ПО для прокси, чтобы обойти это.

0
По вопросам рекламы [email protected]