it-swarm.com.de

Wie liest man Antwortheader in anglejs?

Mein Server gibt diese Art von Header zurück: Content-Range:0-10/0:

enter image description here

Ich habe versucht, diesen Header in eckig ohne Glück zu lesen: 

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

was gerade druckt 

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

Haben Sie Ideen, wie Sie auf den Inhaltsbereichsheader zugreifen können?

29
Artjom Zabelin

Verwenden Sie die Variable headers in Erfolgs- und Fehlercallbacks

Aus der Dokumentation .

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

Wenn Sie sich in derselben Domäne befinden, sollten Sie die Antwortheader wieder abrufen können. Wenn Sie domänenübergreifend sind, müssen Sie Access-Control-Expose-Headers auf dem Server hinzufügen.

Access-Control-Expose-Headers: content-type, cache, ...
38
Muhammad Reda

Warum probierst du das nicht einfach aus?

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

Besonders, wenn Sie die promise zurückgeben möchten, damit sie Teil einer Versprechungskette sein kann.

29
Eugene Retunsky

Aktualisiert basierend auf Mohammeds Antwort ...

$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
medoix

Zusätzlich zu Eugene Retunskys Antwort, zitiert aus $ http documentation zur Antwort:

Das Antwortobjekt hat folgende Eigenschaften:

  • data - {string|Object} - Der mit den Transformationsfunktionen transformierte Antworttext.

  • status - {number} - HTTP-Statuscode der Antwort.

  • headers - {function([headerName])} - Header-Getter-Funktion.

  • config - {Object} - Das Konfigurationsobjekt, mit dem die Anforderung generiert wurde.

  • statusText - {string} - HTTP-Statustext der Antwort.

Bitte beachten Sie, dass die Argument-Rückrufreihenfolge für $ resource (v1.6) nicht die gleiche wie oben ist:

Der Erfolgsrückruf wird mit (value (Object|Array), responseHeaders (Function), status (number), statusText (string))-Argumenten aufgerufen, wobei der Wert die aufgefüllte Ressourceninstanz oder das Sammlungsobjekt ist. Der Fehlerrückruf wird mit dem Argument (httpResponse) aufgerufen.

6
Wtower

Die Antwortheader bleiben im Fall von cors ausgeblendet ..__ Sie müssen Antwortheader hinzufügen, um Angular anzuweisen, Header für Javascript freizugeben.

// 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');

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

1
kuabhina1702

Entsprechend werden die benutzerdefinierten MDN-Header standardmäßig nicht angezeigt. Der Serveradministrator muss sie mithilfe von "Access-Control-Expose-Headers" auf die gleiche Weise verfügbar machen, wie sie mit "Access-Control-allow-Origin" verfahren.

Siehe diesen MDN-Link zur Bestätigung [ https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers]

0
cnngraphics