Aggiunta di intestazioni HTTP personalizzate utilizzando JavaScript

Su una pagina HTML, mentre fai clic sul link di un tag Image (“img”) o anchor (“a”), vorrei aggiungere intestazioni personalizzate per la richiesta GET. Questi collegamenti sono in genere per il download di contenuti dinamici. Queste intestazioni potrebbero essere intestazioni SAML o intestazioni specifiche dell’applicazione personalizzate.

È ansible aggiungere queste intestazioni personalizzate tramite JavaScript? O se li aggiungo tramite XMLHttpRequest, come posso ottenere la funzionalità di download?

Questo requisito è solo per IE6 o 7.

Se stai usando XHR , allora setRequestHeader dovrebbe funzionare, ad es

 xhr.setRequestHeader('custom-header', 'value'); 

PS Dovresti usare Hijax per modificare il comportamento delle tue ancore in modo che funzioni, se per qualche motivo l’AJAX non funziona per i tuoi clienti (come uno script criptato altrove nella pagina).

Penso che il modo più semplice per farlo è usare querystring invece delle intestazioni HTTP.

L’unico modo per aggiungere intestazioni a una richiesta da un browser è utilizzare il metodo setRequestHeader XmlHttpRequest.

L’utilizzo di questo con la richiesta “GET” scaricherà la risorsa. Il trucco è quindi quello di accedere alla risorsa nel modo previsto. Apparentemente dovresti essere in grado di consentire alla risposta GET di essere memorizzata nella cache per un breve periodo, quindi la navigazione verso un nuovo URL o la creazione di un tag IMG con un URL src dovrebbe utilizzare la risposta memorizzata nella cache dal precedente “GET”. Tuttavia è molto probabile che fallisca specialmente in IE, che può essere un po ‘una legge per se stesso in cui è interessato il cache.

In definitiva sono d’accordo con Mehrdad, l’uso della stringa di query è il metodo più semplice e affidabile.

Un’altra alternativa bizzarra è usare un XHR per fare una richiesta a un URL che indica la tua intenzione di accedere a una risorsa. Potrebbe rispondere con un cookie di sessione che verrà portato dalla successiva richiesta per l’immagine o il collegamento.

Come già detto, il modo più semplice è usare querystring.

Ma se non è ansible, per motivi di sicurezza, dovresti considerare l’utilizzo dei cookie.