http - example - No hay encabezado ''Access-Control-Allow-Origin'' en el recurso solicitado-Ionic 2
ionic httpclient (1)
Esta pregunta ya tiene una respuesta aquí:
- Origen no está permitido por Access-Control-Allow-Origin 22 respuestas
Tengo un servicio web de descanso y ahora quiero hacer una solicitud desde la aplicación ionicon 2 frontend al método de autenticación de descanso.
En mi componente de inicio de sesión tengo:
...this._restClient.post(
''authentication'',
body,
(data) => this.handleSuccessAuthenticate(data),
(data) => this.handleErrorAuthenticate(data)
);...
En mi proveedor, mi código _restClient es:
public post(resource: string, data: Object, onSuccess: restClient, onError: callbackRestClient) {
var httpResult: Observable<Response>;
if (data === null) {
httpResult = this._http.post(this.getUrl(resource), ''{}'', { headers: this.getHeaders() });
} else {
httpResult = this._http.post(this.getUrl(resource), JSON.stringify(data), { headers: this.getHeaders() });
}
this.handleResult(httpResult, onSuccess, onError);
}
También tengo un método privado para establecer encabezados:
private getHeaders() {
var headers = new Headers();
headers.append(''Accept'', ''application/json'');
headers.append(''Content-Type'', ''application/json'');
headers.append(''Access-Control-Allow-Origin'', ''*'');
headers.append(''Access-Control-Allow-Credentials'', ''true'');
headers.append("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
headers.append("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token");
return headers;
}
Tengo el mensaje clásico:
Response to preflight request doesn''t pass access control check: No ''Access-Control-Allow-Origin'' header is present on the requested resource
¿Qué estoy haciendo mal?
De hecho, es un problema del lado del servidor y no uno de Angular2. La solicitud de OPCIONES apuntada previamente debe devolver un encabezado Access-Control-Allow-Origin
en su respuesta.
Vea estos artículos para más detalles: