web-dev-qa-db-fra.com

window.open with headers

Puis-je contrôler les en-têtes HTTP envoyés par window.open (navigateur croisé)?

Si non, puis-je en quelque sorte 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 hacks rusés.

43
Andrew Bullock

Puis-je contrôler les en-têtes HTTP envoyés par window.open (navigateur croisé)?

Non

Sinon, est-ce que je peux en quelque sorte window.ouvrir une page qui émet ensuite ma demande avec des en-têtes personnalisés dans sa fenêtre déroulante?

  • Vous pouvez demander une URL qui déclenche un programme côté serveur qui effectue la demande avec des en-têtes arbitraires, puis renvoie la réponse.
  • Vous pouvez exécuter JavaScript (probablement en disant au revoir à Progressive Enhancement) qui utilise XHR pour effectuer la demande avec des en-têtes arbitraires (en supposant que l'URL s'inscrit dans la stratégie d'origine), puis traiter le résultat dans JS.

J'ai besoin de hacks rusés ...

Cela pourrait être utile si vous décriviez le problème au lieu de demander si des solutions possibles fonctionneraient.

31
Quentin

Si vous avez le contrôle côté serveur, il peut être possible de définir la valeur de l'en-tête dans la chaîne de requête et de l'envoyer comme ceci?.

Juste une idée ... Et vous avez demandé une astuce ruse :)

8
Igor

Comme la meilleure réponse l’a écrit à l'aide de XMLHttpResponse à l'exception de window.open, je crée abstracts-anwser comme exemple. 

Le fichier Js principal est download.jsDownload-JS

 // var download_url = window.BASE_URL+ "/waf/p1/download_rules";
    var download_url = window.BASE_URL+ "/waf/p1/download_logs_by_dt";
    function download33() {
        var sender_data = {"start_time":"2018-10-9", "end_time":"2018-10-17"};
        var x=new XMLHttpRequest();
        x.open("POST", download_url, true);
        x.setRequestHeader("Content-type","application/json");
//        x.setRequestHeader("Access-Control-Allow-Origin", "*");
        x.setRequestHeader("Authorization", "JWT " + localStorage.token );
        x.responseType = 'blob';
        x.onload=function(e){download(x.response, "test211.Zip", "application/Zip" ); }
        x.send( JSON.stringify(sender_data) ); // post-data
    }
0
actanble