example common angular typescript https httpclient angular4-httpclient

common - httpclient angular 6



Angular 4: "Respuesta de error de HTTP para(URL desconocida): 0 Error desconocido" (7)

Estoy tratando de consumir una URL de la API. Estoy llamando a la API con el siguiente código.

import {HttpClient, HttpClientModule, HttpParams} from "@angular/common/http"; @Injectable() export class PropertyPrefService { constructor(private http: HttpClient, private configurationService:Configuration) {} public searchProjects(propFilter:string):any{ let temp:any; const options = propFilter ? { params: new HttpParams().set(''query'', propFilter) } : {}; return this.http.get<any>(this.configurationService.propertySystemApiUrl, options) .subscribe((results:any) => { console.log(results); }); }

En el código Angular no recibo ninguna respuesta y recibo un error:

Http respuesta de error para (url desconocido): 0 Error desconocido ".

Sin embargo, cuando hago una solicitud si abro las herramientas de desarrollador en Chrome, veo que la respuesta se recibe del servidor.

La URL es la URL "https: // ..." y no "http: // ...".


Citando a Sander Elias en Grupos de Google :

"El error 0 es lo que se obtiene cuando la solicitud no sale. La causa más común de esto es que CORS no está configurado correctamente en el servidor. Permítanme reformular eso para: En el 98% de los casos, este es un problema del lado del servidor . "


De acuerdo con @StephanRauh y quiero agregar algunos puntos a los suyos. Esto sucede cuando una solicitud no sale o no puede comunicarse con el servidor por algún motivo .
Las razones podrían ser:

  1. Si la conexión a Internet es muy lenta para conectarse al servidor o no está disponible en absoluto.
  2. El servidor en sí está inactivo, es decir, no hay un controlador para nuestra solicitud.

El problema es que Angular Universal usó Express y la seguridad valida el certificado SSL al servidor; Utilicé un certificado SSL autofirmado.

La solución es agregar NODE_TLS_REJECT_UNAUTHORIZED=0 a su entorno para deshabilitar la verificación SSL en Node.js. Solo debes poner esto en desarrollo; En producción es muy arriesgado.


En caso de que alguien más se tropiece con esto, ninguna de estas soluciones funcionó para mí. Lo que funcionó para mí fue apagar uBlock Origin. Estaba bloqueando cualquier url que tuviera la palabra "anuncio" por razones obvias.


Me encontré con este problema al probar una aplicación angular desde dispositivos iPhone / iPad. La aplicación funcionaba bien desde el escritorio. Tenía cors habilitados en el servidor de nodo pero todavía obtenía este error. Entonces, hice lo siguiente para resolverlo.

Ejecutar ng servicio utilizando IP: ng serve --host 192.168.1.10

Apunte las API utilizando IP: en los environment.ts cambié la URL a continuación:

apiUri: ''http://192.168.1.10:9000/api''

Ahora puedo acceder a la URL desde dispositivos móviles.


No está en el mismo dominio, el mismo protocolo, el mismo puerto entre el backend y el frontend.


Tuve exactamente el mismo problema. Había podido ver el resultado dentro de las herramientas de desarrollo de Chrome. Pero siempre recibí la Http failure response for (unknown url): 0 Unknown Error Mensaje de error de Http failure response for (unknown url): 0 Unknown Error .

En mi caso, la razón fue que usé responseType:''text'' para consultar un text/html carga útil text/html . Pero esto no es compatible por alguna razón. Tuve que cambiar a responseType: ''blob'' y usé el FileReader para convertir el blob en una cadena.

Entonces, supongo que tiene el mismo problema cuando el contenido devuelto no coincide con su tipo de responseType configurado. Por cierto por defecto es json .

this.httpClient.get(url, {responseType: ''blob''}) .subscribe(data => { const reader = new FileReader(); reader.onloadend = (e) => { const readerResult = reader.result; console.log(readerResult); // Print blob content as text }; reader.readAsText(data, ''UTF-8''); }, error => console.log(error));