[ gorann @ 10.04.2005. 00:20 ] @
Zelim da dodam novo polje u header i to uradim ovako: this.Response.AddHeader("fieldname", "value"); kada posle ove komande uradim redirekciju na novu stranu i probam da procitam parametar koji sam ubacio u header ne dobijem nista: this.Request.Headers.Get("fieldname") ne daje nista. Moze li mi iko pomoci da resim ovaj problem.

hvala gorann
[ mmix @ 11.04.2005. 14:35 ] @
Imaš lošu predstavu o tome šta je HTTP header To nisu podaci koje možeš da šetaš tamo-vamo, to su instrukcije usputnim proxy serverima i krajnjem klijentu (browseru).

Ako hoćeš da ti se nešto vrati nazad, ili ga stavi u hidden input polje, ili koristi cookie.
Napomena, redirekcija ti nece vratiti sadržaj hidden polja, morao bi da uradiš submit sa klijent strane.


[ gorann @ 12.04.2005. 08:06 ] @
E pa za pocetak da razjasnim sta ja hocu? Dakle, funkcija this.Request.UserAgent() vraca tip browsera koji koristi klijent, zar time ne uzimam vrednost parametra User-Agent iz Http header-a? Ili this.Request.Headers.Get("User-Agent") sto daje isti rezultat. Ako isprintas header na stranici u browser-u videces da je "User-Agent" jedan od parametara http-headera. Ako hocu npr. ime hosta sa koga dolazi zahtev web serveru lepo uradim this.Request.UserHostName() ili this.Request.Headers.Get("Host");. Sve ovo govori da header nije obicna gomila teksta. Ja hocu da u header ubacim field koji ce se zvati npr. pera i imati vrednost 50 i da to prosledim gateway-u ili proxiy-u koji ce na osnovu toga preduzimati odgovarajuce akcije. Za to se, kako mi se cini, koristi objekat Response.

Prema tome, ja bas hocu da se server obraca proxiy-u to je moj cilj a ne da pomocu hiden polja hvatam sta je klijent browser-a poslao serveru. Klijent nije u ovoj prici ( ne klasican klijent ) vec proxy server koga u neku ruku mozemo smatrati klijentom.
MOJA IDEJA JE DA U HEADER-U SA SERVERA PROSLEDIM PARAMETAR ILI POLJE PROXIY-u.

[ mmix @ 12.04.2005. 12:59 ] @
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.