2009-06-07 5 views
6

È possibile .. ad esempio, immagino di rispondere a una richiesta con un 302 (o 303) e informo il browser affinché esegua una richiesta in una determinata posizione .. c'è un'intestazione che posso inviare con l'HTTP 302, in modo che la richiesta successiva del browser includesse quell'intestazione?Invio di informazioni con un reindirizzamento HTTP che il browser deve inviare al percorso reindirizzato?

So che potrei farlo con l'intestazione della posizione, come nel reindirizzamento e specificare le informazioni nell'URL come una stringa di query .. ma mi chiedo se c'è un modo migliore .. sembra che dovrebbe essere uno scenario legit ..

'contenuto si è spostato, andate qui .. oh e si vorrà prendere questo con voi per dare alla posizione redirect'

sto cercando di indovinare un grosso grasso no!

Grazie in anticipo.


Modifica

La ragione di questo è in relazione ai modelli di PRG, in cui si dispone di un URL GET e POST URL, dato che pubblichi i dati e non è accettabile, il redirect del server al GET, e fa un po 'di "magia" per "inviare dati" a quel GET, usando lo stato di sessione più spesso per memorizzare una variabile.

Tuttavia, questo può ripartizione in scenari in cui molte di queste richieste PRG stanno avvenendo, concesso questo non è uno scenario comune e generalmente nessuno deve preoccuparsi di questo .. ma se si DO- avrete bisogno di un modo per identificare le richieste, questo può essere fatto con i parametri della stringa di query inviati nel 302 .. in modo che una voce specifica possa essere messa in stato di sessione in base a tale richiesta.

La domanda riguardava il tentativo di rimuovere la "chiave di richiesta" dall'URL e rendendola più implicita .. i cookie "sembrano" funzionare, ma rendono solo la finestra per gli svantaggi più piccoli.

Sarebbe bello dire che quando si specifica la "posizione" specificata, inviare questi parametri.


Modifica

Basta notare, non sto cercando di ottenere il browser per inviare le intestazioni arbitrarie per la posizione, ma se ci sono delle intestazioni progettati per accennare il contesto della richiesta (come potrebbero i parametri della querystring).

+0

Cosa ti serve comunque? Forse un caso d'uso ci darebbe una visione migliore del tuo problema. – Gumbo

risposta

9

Una risposta di reindirizzamento non contiene dati. È possibile reindirizzare utilizzando un URL con parametri di query, ma la nuova "posizione" dovrà sapere come consumare tali parametri.

+0

tvanfosson, sì, capisco che un reindirizzamento non contiene dati, e che tutti i parametri di query sono solo ... quei parametri che devono essere capiti .. tuttavia, nello specifico, quello che volevo sapere era se fosse possibile inviare quei parametri al di fuori di la querystring. – meandmycode

+0

I cookie, ad esempio, che cosa succede se ho inviato un cookie che è stato rimosso dal destinatario (i reindirizzamenti sono relativi), sarebbe realistico dire che con più di questi tipi di reindirizzamenti avviene contemporaneamente, che il cookie restituisce dalla richiesta viene inviato solo con la richiesta successiva e non è confuso con altre richieste (sulla stessa macchina (ad esempio, immagino di aver colpito lo stesso url che mi reindirizza nella stessa identica istanza))? – meandmycode

+1

Se il reindirizzamento e la pagina di destinazione sono sullo stesso nome host, quindi sì, un cookie inviato dal reindirizzamento deve essere ricevuto dal client e inviato alla pagina di destinazione. Quindi sì, puoi impostare un cookie con un reindirizzamento e farlo comunicare in avanti. Tuttavia, ovviamente i cookie non possono funzionare in più domini, quindi per un reindirizzamento interdominio l'unica necessità di inviare informazioni è di inserirla nell'URL stesso, cioè nella stringa di query. – thomasrutter

0

No, non è possibile. Non puoi costringere il cliente a qualcosa. Puoi solo dire "questa non è la posizione giusta, ma provare quella posizione". Ma non è garantito che il client invierà la stessa richiesta o un'altra richiesta a quella nuova posizione. E dire al cliente di aggiungere un campo di intestazione specifico in quella richiesta successiva alla nuova posizione non è possibile.

+0

Questo è giusto, non ero così tanto dopo che il browser inviava intestazioni arbitrarie, ma mi chiedevo se c'era un'intestazione 'A' che potevo farla mandare .. ad esempio, posso ottenere il browser per inviare parametri stringa di query a quell'URL (se non va lì non importa) .. quindi perché non essere in grado di inviare altri parametri che semplicemente non sono nell'URL .. – meandmycode

+0

Ciò causerebbe vulnerabilità di sicurezza. Basti pensare alla fissazione della sessione in cui l'autore dell'attacco tenta di convincere la vittima a utilizzare una sessione specifica. Potrebbe quindi dire "imposta questo cookie di sessione con quell'ID di sessione". – Gumbo

+0

Non sono sicuro di credere che questo argomento sia lo stesso dei parametri di querystring .. se il tuo sito li sta usando come identificatori di sessione, allora questo è sbagliato .. si tratta puramente di provare a reindirizzare uno stile PRG del client, ma con un contesto l''id' della richiesta originale .. nel mio scenario la chiave esiste puramente per identificare l'istanza della richiesta per utente .. in modo che se in caso di più messaggi al modulo si verificassero contemporaneamente, i reindirizzamenti sono identificabili .. utilizzando la sessione lo stato è inaffidabile in questa forma .. posso farlo oggi usando i parametri della stringa di query, ma non mi piace davvero usarli per questo .. – meandmycode