2015-09-16 9 views
11

I reindirizzamenti relativi (ovvero gli URL relativi nell'intestazione HTTP Location:) non erano originariamente supportati in base allo RFC 2616, section 14.30. Tuttavia questo è stato descritto come un "bug nelle specifiche" e successivamente è stato modificato in RFC 7231, section 7.1.2. Quindi i reindirizzamenti relativi sono ora "ufficialmente supportati".Esistono casi noti di client HTTP che non supportano i reindirizzamenti relativi?

La mia domanda è: ci sono casi noti di client HTTP (browser, strumenti, librerie ..) non supportare i reindirizzamenti relativi?

Aggiornamento: In alternativa, una valida risposta potrebbe fornire un elenco esaustivo dei client HTTP che sono noti ad accettare reindirizzamenti relativi, insieme con il numero di versione varia.

+3

Ora sono tentato di scrivere un client http che non supporta i reindirizzamenti relativi. :-) – Nathan

+0

Questa è una buona soluzione :-) – Grodriguez

+0

Non credo che chiunque possa fornire una lista esaustiva ... – MrTux

risposta

3

Stavo facendo qualche ricerca e sembra che in effetti la maggior parte dei browser (e anche il bot di ricerca di Google) supporta la funzione. Non ero in grado di ottenere una lista definitiva però. Possono esistere circa 10000 client http, ognuno di loro ha il proprio modo di gestire i campi di intestazione (alcuni potrebbero addirittura ignorarlo completamente).

Poiché RFC 7231 è piuttosto nuovo (2014), la mia raccomandazione sarebbe di non contarci. Seguendo Postel's law ("Sii prudente in ciò che invii, sii liberale in ciò che accetti") Penso che attenersi allo standard definito sia sempre una buona idea e aggiungere il dominio al reindirizzamento non è un problema.

+0

Non è così facile. Se usato, ad es. con apache httpd, l'intestazione Location potrebbe essere riscritta automaticamente. – MrTux

+1

Non ho assolutamente bisogno di un elenco con 10000 client ma forse un elenco di quelli più usati potrebbe essere d'aiuto. Per quanto riguarda Postel: RFC 7321 ha effettivamente modificato ciò che è stato considerato dagli editori come "un bug nella specifica [RFC 2616]", ed è stato anche sostenuto che questo era sempre stato supportato da tutti i principali browser. Ri. "Aggiungere il dominio al reindirizzamento non è un problema": dipende.Nel mio caso d'uso (uno scenario complesso di proxy) il server non conosce nemmeno il dominio originale ** né ** (più importante) del protocollo (il proxy funge anche da tunnel https). – Grodriguez

0

"Secondo il protocollo HTTP, l'intestazione Location deve contenere un URI assoluto. [5] Quando il reindirizzamento da una pagina all'altra all'interno della stesso sito, si tratta di un errore comune per utilizzare un URI relativo. Di conseguenza molti browser tollerano URI relativi nell'intestazione Location, ma alcuni browser visualizzano un avviso all'utente finale. "

Da: http://en.wikipedia.org/wiki/URL_redirection#Using_server-side_scripting_for_redirection:


Personalmente, ho usato i reindirizzamenti relativi per molti anni e funzionano con ogni singolo desktop/browser mobile e bot che ho provato con la ricerca. Puoi testare, ad esempio, google bot usando lo strumento fetch as google nella dashboard dei webmaster.

Questo è probabilmente un po 'al di fuori dell'ambito, ma Google segue anche i reindirizzamenti JavaScript (window.location).

+0

Wikipedia non è un riferimento autorevole; le RFC sono. Si prega di consultare RFC 7231, come indicato nella domanda. – Grodriguez

+1

L'articolo di Wikipedia ha citato il protocollo RFC HTTP. –

+1

Se citava RFC 2616, citava una RFC obsoleta, come sapresti se avessi seguito i collegamenti nella mia domanda. A proposito, non so quale versione di wikipedia stavi guardando, ma la sezione che hai linkato in realtà dice: "HTTP/1.1 consente sia un riferimento URI relativo sia un riferimento URI assoluto." e cita RFC 7231 (e questo testo non è stato modificato da luglio 2014). – Grodriguez

Problemi correlati