98 votes

window.open avec les en-têtes

Est-ce que je peux contrôler les en-têtes HTTP envoyés par window.open (cross browser) ?

Si non, puis-je d'une manière ou d'une autre window.open une page qui émet ensuite ma demande avec des en-têtes personnalisés dans sa fenêtre contextuelle ?

J'ai besoin de quelques astuces.

-6voto

Artelius Points 25772

Utilisez POST à la place

Bien qu'il soit facile de construire une requête GET à l'aide de window.open() c'est une mauvaise idée (voir ci-dessous). Une solution de contournement consiste à créer un formulaire qui soumet une requête POST. Par exemple :

<form id="helper" action="###/your_page###" style="display:none">
<inputtype="hidden" name="headerData" value="(default)">
</form>

<input type="button" onclick="loadNnextPage()" value="Click me!">

<script>
function loadNnextPage() {
  document.getElementById("helper").headerData.value = "New";
  document.getElementById("helper").submit();
}
</script>

Bien sûr, vous aurez besoin de quelque chose du côté du serveur pour gérer cela ; comme d'autres l'ont suggéré, vous pourriez créer un script "proxy" qui envoie des en-têtes en votre nom et renvoie les résultats.

Problèmes avec GET

  • Les chaînes de requête sont stockées dans l'historique du navigateur,
  • peut être surfé sur l'épaule
  • copié-collé,
  • et souvent, vous ne voulez pas qu'il soit facile de "rafraîchir" la même transaction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X