Aggiornamento 2014-giu-27 :
RFC 7231, Hypertext Transfer Protocol (HTTP / 1.1): Semantica e contenuto , è stato pubblicato come PROPOSED STANDARD. Dal log delle modifiche :
La sintassi del campo dell'intestazione Posizione è stata modificata per consentire tutti i riferimenti URI, inclusi riferimenti e frammenti relativi, insieme ad alcuni chiarimenti su quando l'uso dei frammenti non sarebbe appropriato. (Sezione 7.1.2)
I punti importanti della Sezione 7.1.2. Posizione :
Se il valore Posizione fornito in una risposta 3xx (reindirizzamento) non ha un componente di frammento, un agente utente DEVE elaborare il reindirizzamento come se il valore erediti il componente di frammento del riferimento URI utilizzato per generare la destinazione richiesta (ovvero, il reindirizzamento eredita il frammento del riferimento originale, se presente).
Ad esempio, una richiesta GET generata per il riferimento URI " http://www.example.org/~tim " potrebbe comportare una risposta 303 (Vedi altro) contenente il campo di intestazione:
Location: /People.html#tim
che suggerisce che l'agente utente reindirizza a " http://www.example.org/People.html#tim "
Allo stesso modo, una richiesta GET generata per il riferimento URI " http://www.example.org/index.html#larry " potrebbe comportare una risposta 301 (spostata in modo permanente) contenente il campo di intestazione:
Location: http://www.example.net/index.html
che suggerisce che l'agente utente reindirizza a " http://www.example.net/index.html#larry ", preservando l'identificatore del frammento originale.
Questo dovrebbe rispondere chiaramente alle tue domande.
Aggiorna END
questo è un problema aperto (non specificato) con la specifica HTTP corrente . è affrontato in 2 numeri del gruppo di lavoro httpbis IETF :
# 6 consente frammenti Location
nell'intestazione. # 43 dice questo:
Ho appena provato questo con vari browser.
- Firefox e Safari utilizzano il frammento nell'intestazione della posizione.
- Opera utilizza il frammento dall'URI di origine, quando presente, altrimenti il frammento dalla posizione di reindirizzamento
- IE (8) ignora il frammento nell'URI di posizione, quindi utilizzerà il frammento dall'URI di origine, quando presente
Proposta:
"Nota: il comportamento in cui gli identificatori di frammento dall'URI originale e il reindirizzamento devono essere combinati non è definito; gli attuali agenti utente differiscono effettivamente su quale frammento abbia la precedenza."
[...]
Sembra che IE8 non utilizzare l'idenfitier frammento Location
(l'ho visto comportamento potrebbe essere limitata a localhost).
Pertanto, sembra che abbiamo un comportamento coerente per Safari / IE / Firefox / Chrome (appena testato), in quanto viene utilizzato il frammento dell'intestazione Posizione, indipendentemente dall'URI originale.
Pertanto cambiare la mia proposta di documento che come comportamento previsto.
questo porta alla risposta più compatibile con il browser e futura (perché questo problema alla fine diventerà standardizzato) alla tua domanda:
A: i frammenti degli URL originali vengono scartati.
B: i frammenti Location
dell'intestazione sono onorati.