Malheureusement, il n'y a pas une API pour vous donner l'-têtes de réponse HTTP pour votre première demande de page. C'était la question initiale posté ici. Il a été demandé à plusieurs reprises, aussi, parce que certaines personnes voudraient de se procurer les en-têtes de réponse de l'original de la demande de page sans la délivrance d'un autre.
Pour les Requêtes AJAX:
Si une requête HTTP sur AJAX, il est possible d'obtenir les en-têtes de réponse avec le getAllResponseHeaders() méthode. Il fait partie de la XMLHttpRequest API. Pour voir comment cela peut être appliqué, découvrez la fetchSimilarHeaders() la fonction ci-dessous. Notez que c'est une façon de contourner le problème qui ne seront pas fiables pour certaines applications.
myXMLHttpRequest.getAllResponseHeaders();
L'API a été spécifié dans la suite de candidat recommandation pour XMLHttpRequest: XMLHttpRequest - W3C Candidat Recommandation 3 août 2010
Plus précisément, le getAllResponseHeaders() la méthode a été spécifié dans la section suivante:
http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders()-méthode
Le MDN documentation est bon, aussi:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.
Ce ne sera pas vous donner d'informations sur la page d'origine de la requête HTTP en-têtes de réponse, mais il pourrait être utilisé pour émettre des hypothèses sur le contenu de ces en-têtes ont été. Plus sur cela est décrit ci-après.
L'obtention de valeurs d'en-tête de la première Page de la Demande:
Cette question est posée, il y a plusieurs années, de demander spécifiquement sur la façon d'arriver à l'original-têtes de réponse HTTP de la page en cours (c'est à dire la même page à l'intérieur de laquelle le javascript a été en cours d'exécution). C'est une tout autre question que de simplement obtenir les en-têtes de réponse pour une requête HTTP. Pour la première demande de page, les en-têtes ne sont pas facilement disponibles pour javascript. Si les valeurs d'en-tête que vous devez être fiable et suffisamment cohérente si vous demander à nouveau la même page via AJAX dépendra de votre application particulière.
Voici quelques suggestions pour contourner ce problème.
1. Demandes sur les Ressources qui sont en grande partie statique
Si la réponse est en grande partie statique et les en-têtes ne devrait pas varier beaucoup entre les demandes, vous pouvez faire une requête AJAX pour la même page, vous êtes actuellement sur et supposons qu'ils sont, ils sont les mêmes valeurs qui faisaient partie de la page de réponse HTTP. Cela pourrait vous permettre d'accéder à l'en-tête, vous devez à l'aide de la belle XMLHttpRequest API décrite ci-dessus.
function fetchSimilarHeaders (callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4) {
//
// The following headers may often be similar
// to those of the original page request...
//
if (callback && typeof callback === 'function') {
callback(request.getAllResponseHeaders());
}
}
};
//
// Re-request the same page (document.location)
// We hope to get the same or similar response headers to those which
// came with the current page, but we have no guarantee.
// Since we are only after the headers, a HEAD request may be sufficient.
//
request.open('HEAD', document.location, true);
request.send(null);
}
Cette approche va être problématique si vous avez vraiment de s'appuyer sur les valeurs d'être cohérent entre les requêtes, puisque vous ne pouvez pas garantir qu'ils sont les mêmes. Il va dépendre de votre application spécifique et si vous savez que la valeur que vous avez besoin est quelque chose qui ne sera pas en passant de l'un demande à l'autre.
2. Faire Des Inférences
Il y a certaines propriétés de la NOMENCLATURE dont le navigateur détermine par examiner les en-têtes. Certaines de ces propriétés reflètent les en-têtes HTTP directement (par exemple, navigator.userAgent
la valeur de la HTTP UserAgent
champ d'en-tête). Par renifler les propriétés disponibles, vous pourriez être en mesure de trouver ce dont vous avez besoin, ou quelques indices pour indiquer quel est le contenu de la réponse HTTP.
3. Les ranger
Si vous contrôlez le côté serveur, vous pouvez accéder à tout l'en-tête que vous aimez comme vous construire la réponse complète. Les valeurs peuvent être transmises au client avec la page, planqué dans certains balisage ou peut-être dans un inline structure JSON. Si vous voulez avoir tous les-tête de requête HTTP à la disposition de votre javascript, vous pouvez itérer sur le serveur et de les renvoyer comme des valeurs cachées dans le balisage. Ce n'est probablement pas idéal pour envoyer des valeurs d'en-tête de cette façon, mais vous pouvez certainement le faire pour la valeur spécifique dont vous avez besoin. Cette solution est sans doute inefficace, trop, mais ce serait faire le travail si vous en avez besoin.