Jak odczytać nagłówki odpowiedzi w angularjs?

Mój serwer zwraca taki nagłówek: Content-Range:0-10/0:

Tutaj wpisz opis obrazka

Próbowałem bez powodzenia czytać ten nagłówek:

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

Które tylko drukuje

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

Jakieś pomysły, jak uzyskać dostęp do nagłówka zakresu treści?

Author: Community, 2015-03-02

6 answers

Użyj zmiennej headers w wywołaniach sukcesu i błędów

Z dokumentacji .

$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.
  });

Jeśli jesteś w tej samej domenie, powinieneś być w stanie odzyskać nagłówki odpowiedzi. Jeśli między domenami, musisz dodać Access-Control-Expose-Headers nagłówek na serwerze.

Access-Control-Expose-Headers: content-type, cache, ...
 36
Author: Muhammad Reda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-07 02:23:18

Dlaczego po prostu nie spróbować:

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

Szczególnie, jeśli chcesz zwrócić promise, aby mógł być częścią łańcucha obietnic.

 26
Author: Eugene Retunsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-07 18:27:23

Zaktualizowano na podstawie odpowiedzi Mahometa...

$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.
  });
 9
Author: medoix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 02:49:33

Dodatkowo do odpowiedzi Eugene 'a Retunsky' ego, cytując z dokumentacji $http odnośnie odpowiedzi:

Obiekt odpowiedzi ma następujące właściwości:

  • Dane{string|Object} – ciało odpowiedzi przekształciło się wraz z funkcjami transformacji.

  • Status{number} – kod statusu HTTP odpowiedzi.

  • Nagłówki{function([headerName])} – funkcja getter nagłówka.

  • Config{Object} – obiekt konfiguracyjny, który został użyty do wygenerowania żądania.

  • StatusText{string} – tekst statusu HTTP odpowiedzi.

Proszę zauważyć, że argument callback order for $resource (v1.6) nie jest taki sam Jak powyżej:

Wywołanie zwrotne wywołane sukcesem jest wywołane argumentami (value (Object|Array), responseHeaders (Function), status (number), statusText (string)), gdzie wartością jest wypełniona instancja zasobu lub obiekt collection. Błąd wywołanie zwrotne jest wywoływane argumentem (httpResponse).
 5
Author: Wtower,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-17 15:59:58

Nagłówki odpowiedzi w przypadku Kors pozostają ukryte. Musisz dodać nagłówki odpowiedzi, aby skierować kątowe, aby odsłonić nagłówki w 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');

Źródło: https://github.com/angular/angular/issues/5237

 0
Author: kuabhina1702,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 07:02:26

Zgodnie z MDN niestandardowe nagłówki nie są domyślnie wyświetlane. Administratorzy serwera muszą ujawnić je za pomocą "Access-Control-Expose-Headers" w taki sam sposób, jak mają do czynienia z"access-control-allow-origin"

Zobacz ten link MDN dla potwierdzenia [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers]

 0
Author: cnngraphics,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 15:35:26