Как читать заголовки ответов в angularjs?
Мой сервер возвращает такой заголовок: Content-Range:0-10/0
:
![enter image description here]()
Я попытался прочитать этот заголовок в angular без везения:
var promise = $http.get(url, {
params: query
}).then(function(response) {
console.log(response.headers());
return response.data;
});
который просто печатает
Object {content-type: "application/json; charset=utf-8"}
Любые идеи о том, как получить доступ к заголовку диапазона содержимого?
Ответы
Ответ 1
Используйте переменную headers
при успешном выполнении и обратные вызовы
Из документации.
$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.
});
Если вы находитесь в одном домене, вы сможете вернуть заголовки ответов. Если кросс-домен, вам нужно будет добавить заголовок Access-Control-Expose-Headers
на сервере.
Access-Control-Expose-Headers: content-type, cache, ...
Ответ 2
Почему бы просто не попробовать:
var promise = $http.get(url, {
params: query
}).then(function(response) {
console.log('Content-Range: ' + response.headers('Content-Range'));
return response.data;
});
Особенно если вы хотите вернуть promise
, чтобы он мог быть частью цепочки promises.
Ответ 3
Обновлено на основе ответа Мухаммада...
$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.
});
Ответ 4
Кроме ответа Юджина Ретунского, цитируя $http документацию относительно ответа:
Объект ответа имеет следующие свойства:
-
datastrong > - {string|Object}
- Тело ответа преобразуется с функциями преобразования.
-
статус - {number}
- код состояния HTTP для ответа.
-
заголовки - {function([headerName])}
- функция получателя заголовка.
-
config - {Object}
- объект конфигурации, который использовался для генерации запроса.
-
statusText - {string}
- текст ответа HTTP-ответа.
Обратите внимание, что порядок обратного вызова аргумента для $resource (v1.6) не совпадает с как выше:
Обратный вызов успеха вызывается с аргументами (value (Object|Array), responseHeaders (Function), status (number), statusText (string))
, где значение представляет собой заполненный экземпляр ресурса или объект коллекции. Обратный вызов ошибки вызывается с аргументом (httpResponse)
.
Ответ 5
Заголовки ответов в случае cors остаются скрытыми.
Вам нужно добавить заголовки ответов, чтобы направить Angular, чтобы открыть заголовки для 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');
Источник: https://github.com/angular/angular/issues/5237