page change javascript angularjs angular-http

javascript - change - ¿Cómo leer encabezados de respuesta en angularjs?



page title angular 4 (6)

¿Por qué no simplemente probar esto?

var promise = $http.get(url, { params: query }).then(function(response) { console.log(''Content-Range: '' + response.headers(''Content-Range'')); return response.data; });

Especialmente si desea devolver la promise para que pueda ser parte de una cadena de promesas.

Mi servidor devuelve este tipo de encabezado: Content-Range:0-10/0 :

Traté de leer este encabezado en angular sin suerte:

var promise = $http.get(url, { params: query }).then(function(response) { console.log(response.headers()); return response.data; });

que solo imprime

Object {content-type: "application/json; charset=utf-8"}

¿Alguna idea de cómo acceder al encabezado del rango de contenido?


Actualizado según la respuesta de Muhammad ...

$http.get(''/someUrl''). success(function(data, status, headers, config) { // this callback will be called asynchronously // when the response is available console.log(headers()[''Content-Range'']); }) .error(function(data, status, headers, config) { // called asynchronously if an error occurs // or server returns response with an error status. });


Además de la respuesta de Eugene Retunsky, citando la documentación de $ http con respecto a la respuesta:

El objeto de respuesta tiene estas propiedades:

  • data - {string|Object} - El cuerpo de respuesta transformado con las funciones de transformación.

  • estado - {number} - Código de estado HTTP de la respuesta.

  • encabezados - {function([headerName])} - Función captadora del encabezado.

  • config - {Object} : el objeto de configuración que se utilizó para generar la solicitud.

  • statusText - {string} - Texto de estado HTTP de la respuesta.

Tenga en cuenta que el orden de devolución de llamada de argumento para $resource (v1.6) no es el mismo que el anterior:

La devolución de llamada exitosa se llama con argumentos (value (Object|Array), responseHeaders (Function), status (number), statusText (string)) , donde el valor es la instancia de recurso poblada o el objeto de colección. La devolución de llamada de error se llama con el argumento (httpResponse) .



Los encabezados de respuesta en caso de cors permanecen ocultos. Debe agregar encabezados de respuesta para dirigir Angular para exponer encabezados a javascript.

// From server response headers : header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Custom-header"); header("Access-Control-Expose-Headers: X-Custom-header"); header("X-Custom-header: $some data"); var data = res.headers.get(''X-Custom-header'');

Fuente: https://github.com/angular/angular/issues/5237


Utilice la variable de headers en devoluciones de llamada de éxito y error

De la documentación .

$http.get(''/someUrl''). success(function(data, status, headers, config) { // this callback will be called asynchronously // when the response is available }) .error(function(data, status, headers, config) { // called asynchronously if an error occurs // or server returns response with an error status. });

Si está en el mismo dominio, debería poder recuperar los encabezados de respuesta. Si es de dominio cruzado, deberá agregar el Access-Control-Expose-Headers en el servidor.

Access-Control-Expose-Headers: content-type, cache, ...