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)
.
De acuerdo con los encabezados personalizados MDN no están expuestos por defecto. El administrador del servidor debe exponerlos usando "Access-Control-Expose-Headers" de la misma manera que se ocupa de "access-control-allow-origin"
Consulte este enlace de MDN para confirmar [ https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers]
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'');
Utilice la variable de
headers
en devoluciones de llamada de éxito y error
$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, ...