es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La URL funciona en Postman pero no utilizando HttpClient en Angular 9+.

Estoy tratando de obtener los datos JSON de una URL que funciona si la pegas en el navegador y también a través de Postman, pero cuando hago una solicitud GET utilizando Angular HttpClietn, obtengo el error de Política de CORS.

¿Alguien puede ayudarme a entender por qué esto no funciona?

URL: https://ant.aliceblueonline.com/api/v1/search?key=IDEA

Código Angular:

  • Primer intento
GetScripInfo(): Observable<any>{
    let header = new HttpHeaders({ 'Accept': 'application/json' });
    header.set('Content-Type', 'application/json');
    const requestOptions = { headers: header};  

    return this.httpClient.get<any>("https://ant.aliceblueonline.com/api/v1/search?key=IDEA", 
    requestOptions).pipe(
      map((res: any) => {
        debugger;
        res.json()})
    );
}
  • Segundo intento
GetScripInfo(): Observable<any>{
    let header = new HttpHeaders({ 'Access-Control-Allow-Origin': '*', });

    header.set('access-control-allow-origin',"http://localhost:4200/");
    header.set('withCredentials', "true");
    header.set('Content-Type', 'application/json');
    const requestOptions = { headers: header};  

    return this.httpClient.get<any>("https://ant.aliceblueonline.com/api/v1/search?key=IDEA", requestOptions);
}

Método de llamada

GetScripInfo(value: string) {
    debugger;
    this.algoService.GetScripInfo().subscribe(result => {
      debugger;
    });
}
  • URL de StackBlitz:
    https://stackblitz.com/edit/angular-ivy-rbbwp6?file=src/app/app.component.ts
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error de política de CORS suele ocurrir cuando un sitio web solicita datos desde un dominio o puerto diferente al del sitio web original. Esto se hace para evitar que código malicioso utilice el navegador del usuario para enviar datos a otro servidor sin su conocimiento ni consentimiento. En el caso del código Angular proporcionado, el error ocurre porque la API solicitada tiene un dominio diferente al del servidor que sirve la aplicación Angular.

    Para solucionar este error, es necesario configurar el servidor de la API para permitir solicitudes de recursos de origen cruzado (CORS). Esto generalmente se logra agregando los encabezados apropiados a la respuesta HTTP para indicar que se permite el acceso al recurso solicitado desde dominios diferentes al que sirve el recurso. En este caso, es probable que el servidor deba agregar un encabezado Access-Control-Allow-Origin con un valor de * o el dominio específico que realiza la solicitud.

    Desafortunadamente, no hay forma de solucionar el problema desde el lado del cliente, por lo que deberá contactar al propietario del servidor de la API para solucionar los problemas de encabezado. Una vez que el servidor envíe los encabezados correspondientes, el error de CORS debería resolverse y la aplicación Angular debería poder realizar solicitudes a la API sin errores.

Comments are closed.