Iskreno, uneo si više zabune nego razjašnjenja. Ajd da probam da raščlanim ovo:
1. Hoćeš da proslediš komandu proxy-u. Http header jeste pravo mesto za to.
2. Uradiš Response.Redirect na Form2.aspx (na primer)
3. Očekuješ da u WebForm2.aspx codebihend možeš da očitaš vrednost koju si ubacio u Response.Headers?
Evo zašto ovo ne radi:
1. Nalaziš se na webform1
2. Dodao si "pera" u Response.Header
3. Uradio si Response.Redirect
4. U tom trenutku, renderovanje stranice se blokira, asp.net ubacuje status 302 Redirect u header i taj response, uključujući i pera i redirect ide nazad u proxy, i nazad na klijenta. Ako "pera" nešto znači proxy-u, proxy će to videti.
5. Kao odgovor na status 302, klijent izdaje novi request za webform2 i šalje NOVI set hedera proxy-u, koji doda svoje informacije (obično VIA heder) i pošalje serveru
6. codebehind webform2-a ne vidi "pera" zato što ga ni klijent ni proxy nisu ubacili.
Pretpostavljam da te zbunjuje to što i u request i u response postoje hederi. ali u requestu su hederi koje je kreirao klijent (i proxy) kao instrukcije serveru, tj. objašenjenje serveru sa kim ima posla, koji browser, koji je encoding request-a, koji tipovi odgovora su prihvatljivi, itd. Response hederi su instrukcije klijentu (i usputnom proxy-u) od strane servera i server ih kreira, tu su expiration sadržaja, zahtev za authentikacijom, itd. Format im je isti, ali im je funkcija drugačija.
U krajnjoj liniji, laički rečeno, http hederi putuju samo u JEDNOM pravcu. Tehnički, po standardu, oni su takođe immutable, tj. usputni proxy i gateway serveri ne bi smeli da ih menjaju, mogu samo da dodaju extra informacije. Ti možeš na serveru da očitaš sve request hedere i da ih repliciraš u response (mada ne vidim neke koristi), ali browser to sigurno neće uraditi u drugom smeru.
