Savage odgovori html. Opis objekta Response. Primjeri slabe zaštite


Da biste dobili instancu ove klase, koristite poziv metode wa()->getResponse(), na primjer:

Wa()->getResponse()->getHeader("Content-type")

Metode javna funkcija addCss( $url, $app_id = lažno)

Dodaje URL na listu CSS datoteka. Svi dodati URL-ovi CSS datoteka mogu se preuzeti u Smarty predlošku koristeći ($wa->css()) metodu.

Opcije
  • $url

    Relativni URL CSS datoteke. Ako je navedena vrijednost parametra $app_id, tada bi URL datoteke trebao biti specificiran u odnosu na URL direktorija s datotekama odgovarajuće aplikacije. Inače, relativni URL treba biti specificiran u odnosu na direktorij instalacije okvira.

  • $app_id

    ID aplikacije.

Primjer wa()->getResponse()->addCss("css/myapp.css", "myapp"); javna funkcija addGoogleAnalytics ( $str)

Dodaje isječak JavaScript koda za Google Analytics. Kôd Google Analytics (uključujući onaj koji je dodan ovom metodom) povezan je u HTML predložak web lokacije pomoću metode ($wa->headJs()).

Opcije
  • $str

    Fragment JavaScript koda.

javna funkcija addHeader( $name, $value, $replace = istina)

Dodaje zaglavlje koje će server poslati kao odgovor na zahtjev korisnika. Sva zaglavlja dodana na ovaj način će biti poslana korisniku kada se metoda izvrši.

Opcije
  • $name

    Naziv naslova.

  • $value

    Vrijednost naslova.

  • $replace

    Oznaka koja pokazuje da li treba zamijeniti prethodno postavljenu vrijednost za navedeno zaglavlje.

Primjer wa()->getResponse()->addHeader("Content-type", "application/json"); javna funkcija addJs( $url, $app_id = lažno)

Dodaje URL na listu JavaScript datoteka. Svi dodati URL-ovi JavaScript datoteka mogu se preuzeti u Smarty predlošku koristeći ($wa->js()) metodu.

Opcije
  • $url

    URL datoteke sa JavaScript kodom. Ako je navedena vrijednost parametra $app_id, tada bi URL datoteke trebao biti specificiran u odnosu na URL direktorija s datotekama odgovarajuće aplikacije. Inače, relativni URL treba biti specificiran u odnosu na direktorij instalacije okvira.

  • $app_id

    ID aplikacije.

Primjer wa()->getResponse()->addJs("js/myapp.js", "myapp"); javna funkcija getCss( $html = tačno, $strict = netačno)

Vraća listu prethodno dodatih veza za CSS fajlove.

Opcije
  • $html

    Oznaka koja ukazuje na potrebu vraćanja HTML koda za povezivanje CSS datoteka. Ako je navedeno false, metoda vraća niz URL-ova za takve datoteke.

  • $strogo

    Označite za korištenje XHTML formata umjesto HTML-a kada je $html postavljeno na true .

Primjer wa()->getResponse()->getCss(); javna funkcija getHeader( $name = null)

Vraća vrijednost zaglavlja odgovora.

Opcije
  • $name

    ID zaglavlja čija vrijednost treba vratiti. Ako nije navedeno, metoda vraća cijeli niz trenutnih zaglavlja.

Primjer wa()->getResponse()->addHeader("Content-type", "application/json"); wa()->getResponse()->getHeader("Content-type"); Rezultat aplikacija/json javna funkcija getJs ( $html = istina)

Vraća listu veza JavaScript datoteke odgovora.

Opcije
  • $html

    Opciona zastavica koja ukazuje na potrebu da se vrati HTML kod za povezivanje JavaScript datoteka. U suprotnom, metoda vraća trenutni niz URL-ova datoteka.

Primjer wa()->getResponse()->getJs(); javna funkcija getMeta( $name = null)

Vraća sadržaj META podataka: naslov stranice ("title"), ključne riječi META oznake ("ključne riječi"), opis ("description").

Opcije
  • $name

    Identifikator META elementa podataka čija vrijednost treba biti vraćena. Ako nije navedeno, metoda vraća cijeli trenutni niz META podataka.

Primjer wa()->getResponse()->getMeta("keywords"); javna funkcija getStatus()

Vraća prethodno postavljeni status odgovora servera.

Primjer wa()->getResponse()->setStatus(200); wa()->getResponse()->getStatus(); Rezultat 200 javna funkcija getTitle()

Vraća naslov (TITLE) stranice.

Primjer wa()->getResponse()->setTitle("Moja online trgovina"); wa()->getResponse()->getTitle(); Rezultat Preusmjeravanje javne funkcije moje online trgovine ( $url, $code = null)

Preusmjerava korisnika na navedeni URL.

Opcije
  • $url

    URL na koji korisnik treba biti preusmjeren.

  • $code

    Kôd odgovora servera koji bi trebao pratiti preusmjeravanje.

Primjer wa()->getResponse()->redirect("http://otherdomain.ru/", 301); javna funkcija sendHeaders()

Šalje prethodno postavljena zaglavlja.

Primjer wa()->getResponse()->addHeader("Content-type", "application/json"); wa()->getResponse()->sendHeaders(); javna funkcija setCookie( $name, $value, $expire = null, $path = null, $domain = "", $secure = false, $http_only = false)

Postavlja vrijednost unosa kolačića koristeći PHP funkciju setcookie.

Opcije
  • $name

    ID zapisa.

  • $value

    Rekordna vrijednost.

  • $expire

    Vrijeme isteka.

  • $path

    Put do URI-ja "poddirektorijuma" unutar kojeg je vrijednost unosa važeća.

  • $domena

    Ime domene za koje je važeća vrijednost unosa.

  • $secure

    Oznaka koja označava da je unos dostupan samo ako se vrijednost prenosi putem HTTPS protokola.

  • $http_only

    Oznaka koja označava da je vrijednosti zapisa dostupna samo preko HTTP protokola i da nije dostupna putem klijentskih skripti (JavaScript).

Primjer wa()->getResponse()->setCookie("code", $code, time() + 30 * 86400, null, "", false, true); javna funkcija setMeta( $name, $value = null)

Postavlja vrijednost META podataka. Ova vrijednost je dostupna u Smarty predlošcima koristeći ($wa->meta()) metodu.

Opcije
  • $name

    Identifikator META elementa podataka: naslov stranice ("title"), ključne riječi META oznake ("ključne riječi") i opis ("opis").

  • $value

    Vrijednost elementa.

Primjer wa()->getResponse()->setMeta("keywords", $keywords); javna funkcija setStatus( $code)

Postavlja status odgovora servera.

Opcije
  • $code

    Statusni kod

Primjer wa()->getResponse()->setStatus(404); javna funkcija setTitle( $title)

Postavlja naslov (TITLE) stranice. Sadržaj naslova je dostupan u Smarty predlošcima pomoću metode ($wa->title()).

Nakon primanja i tumačenja poruke zahtjeva, server odgovara porukom HTTP odgovora:

  • Statusna linija
  • Nula ili više polja zaglavlja (Općenito|Odgovor|Entitet) praćenih CRLF-om
  • Prazan red (tj. red bez ničega ispred CRLF-a) koji označava kraj polja zaglavlja
  • Opciono tijelo poruke
  • Svaki sljedeći odjeljak objašnjava entitete koji se koriste u poruci HTTP odgovora.

    Statusna linija poruke

    Statusna linija se sastoji od verzije protokola praćene numeričkim statusnim kodom i pripadajućom tekstualnom frazom. Elementi su odvojeni razmakom SP znakova.

Statusna linija = HTTP verzija SP Statusni kod SP Reason-Phrase CRLF HTTP verzija

Server koji podržava HTTP verziju 1.1 će vratiti sljedeće informacije o verziji:

HTTP-verzija = HTTP/1.1

Status Code

Element Status-Code je trocifreni cijeli broj pri čemu prva znamenka Status-Code definira klasu odgovora, a posljednje dvije cifre nemaju nikakvu ulogu kategorizacije. Postoji 5 vrijednosti za prvu cifru:

S.N. Šifra i opis
1 1xx: Informativni

To znači da je zahtjev primljen i da se proces nastavlja.

2 2xx: Uspjeh

To znači da je akcija uspješno primljena, shvaćena i prihvaćena.

3 3xx: Preusmjeravanje

To znači da se moraju poduzeti dalje radnje kako bi se zahtjev dovršio.

4 4xx: Greška klijenta

To znači da zahtjev sadrži netačnu sintaksu ili se ne može ispuniti.

5 5xx: Greška servera

To znači da server nije uspio ispuniti naizgled valjan zahtjev.

HTTP statusni kodovi su proširivi i HTTP aplikacije nisu potrebne da razumiju značenje svih registrovanih statusnih kodova. Lista svih statusnih kodova data je u posebnom poglavlju za vašu referencu.

Polja zaglavlja odgovora

Proučavaćemo Općenito zaglavlje i Zaglavlje entiteta u posebnom poglavlju kada ćemo naučiti HTTP polja zaglavlja. Za sada, hajde da proverimo koja su polja zaglavlja odgovora.

Polja zaglavlja odgovora dozvoljavaju serveru da prosledi dodatne informacije o odgovoru koje se ne mogu staviti u statusnu liniju. Ova polja zaglavlja daju informacije o serveru io daljem pristupu resursu identifikovanom pomoću Request-URI.

  • Proxy-Authenticate

  • WWW-Autentikacija

Možete uvesti svoja prilagođena polja u slučaju da ćete napisati svoj vlastiti prilagođeni Web klijent i server.

Primjeri poruka odgovora

Sada sastavite sve zajedno da formiramo HTTP odgovor na zahtjev za preuzimanje hello.htm stranice s web servera koji radi na web lokaciji

HTTP/1.1 200 OK Datum: Pon, 27. jul 2009. 12:28:53 GMT Server: Apache/2.2.14 (Win32) Zadnja izmjena: sre, 22. jul 2009. 19:15:56 GMT Dužina sadržaja: 88 sadržaja- Tip: text/html Veza: Zatvorena Zdravo, svijete!

Sljedeći primjer prikazuje HTTP poruku odgovora koja prikazuje stanje greške kada web server nije mogao pronaći traženu stranicu:

HTTP/1.1 404 Nije pronađen Datum: ned, 18. oktobar 2012. 10:36:20 GMT Server: Apache/2.2.14 (Win32) Dužina sadržaja: 230 Veza: zatvorena vrsta sadržaja: text/html; charset=iso-8859-1 404 Nije pronađeno Nije pronađeno

Traženi URL /t.html nije pronađen na ovom serveru.

Slijedi primjer poruke HTTP odgovora koja prikazuje stanje greške kada je web server naišao na pogrešnu HTTP verziju u datom HTTP zahtjevu:

HTTP/1.1 400 Loš datum zahtjeva: ned, 18. oktobar 2012. 10:36:20 GMT Server: Apache/2.2.14 (Win32) Dužina sadržaja: 230 Tip sadržaja: tekst/html; charset=iso-8859-1 Veza: zatvoreno 400 Loš zahtjev Loš zahtjev

Vaš pretraživač je poslao zahtjev koji ovaj server nije mogao razumjeti.

Red zahtjeva sadržavao je nevažeće znakove nakon niza protokola.

Opisani objekt je vrlo koristan i moćan alat. Ovaj objekat ima nekoliko metoda, njihov opis je dat u nastavku:

kolekcije: Metode: Svojstva: Response.Cookies zbirka

Kolekcija kolačića postavlja vrijednosti za kolačiće. Ako navedeni kolačići ne postoje, on ih kreira. Ako kolačić postoji, on poprima novu vrijednost i uništava staru.

Response.Cookies(kolačić) [(ključ) | . atributi ] = vrijednost

Opcije:

  • kolačić - naziv kolačića
  • ključ - Opcioni parametar. Ako je naveden, tada je kolačić direktorij (ugniježđen), a ključ je skup vrijednosti.
  • atributi - Navedene informacije o samim kolačićima. Ovaj parametar može biti jedan od sljedećih:
  • vrijednost - Određuje vrijednost koja će se dodijeliti ovom ključu ili atributu.
ImeOpis
DomainSamo snimanje. Ako je navedeno, kolačići se šalju samo na zahtjev sa ove domene.
IstičeSamo snimanje. Datum na koji kolačić ističe. Ovaj datum mora biti postavljen da bi kolačići bili upisani na hard disk klijenta nakon završetka sesije. Ako ovaj atribut nije postavljen, tada se pretpostavlja da je datum isteka kolačića trenutni datum. Kolačići će isteći odmah nakon završetka sesije.
HasKeySamo čitanje. Označava da li kolačić sadrži dati ključ.
PutSamo snimanje. Ako je navedeno, kolačići se šalju samo na zahtjev sa ove staze. Ako parametar nije postavljen, koristi se put do aplikacije.
SigurnoSamo snimanje. Označava da li će kolačići biti zaštićeni ili ne.

komentar:

Ako je ključni kolačić kreiran kao što je prikazano u sljedećoj skripti,

tada će biti poslano sljedeće zaglavlje:

Set-Cookie:MYCOOKIE=TYPE1=šećer&TYPE2=kolačići

Ako dodijelite vrijednost mycookie-u bez korištenja ključeva, tada će ova radnja uništiti ključeve tipa 1 i tipa 2. npr.:

U prethodnom primjeru, ključevi type1 i type2 će biti uništeni i njihove vrijednosti će biti izgubljene. Mycookie će sada sadržavati vrijednost čokoladni marshmallow.

Postojanje određenog ključa možete provjeriti i na sljedeći način:

Ako je prikazano TRUE, onda takav ključ postoji; ako je FALSE, ne postoji.

Metoda Response.Write

Odgovor. Upišite varijablu_ili_vrijednost

Opcije:

  • varijabla_ili_vrijednost - Podaci koji se prikazuju na ekranu pretraživača putem HTML-a. Ovaj parametar može biti bilo koje vrste koju podržava VisualBasic Scripting Edition. Odnosno, podaci mogu biti sljedećih tipova: datum, niz, karakter, numeričke vrijednosti. Vrijednost ovog parametra ne može sadržavati kombinaciju %>. Umjesto toga, možete koristiti ekvivalentnu kombinaciju %\>. Web server će konvertovati ovu sekvencu u potrebnu kada se skripta izvrši.

Sljedeći primjer pokazuje kako metoda Response.write radi za izlaz poruke klijentu.

Samo ću ti reći: I tvoje ime

Sljedeći primjer dodaje HTML oznaku na web stranicu. Pošto ova metoda ne može sadržavati kombinaciju %>, koristimo sekvencu %\>. Dakle, primjer skripte:

Izlaz će biti linija:

Metoda Response.Redirect

Response.Redirect URL (URL - Uniform Resource Locator)

Opcije:

  • URL - Parametar je univerzalni deskriptor resursa. Pokazuje kada pretraživač treba da bude preusmjeren.

komentar:

Svako pojavljivanje ove metode između oznaka i web stranice biće zanemareno. Ova metoda se može koristiti samo u zaglavlju HTML stranice. Ova metoda će proslijediti zaglavlje pregledniku ako URL parametar ovog objekta nedostaje u sljedećem obliku:

HTTP/1.0 302 URL lokacije premještenog objekta

Response.End metoda

Response.End

komentar:

Ako je svojstvo Response.Buffer postavljeno na TRUE, tada će pozivanje metode Response.End obrisati bafer, gurajući podatke iz njega do klijenta. Ako ne želite da šaljete podatke korisniku, trebali biste pozvati sljedeću metodu:

Response.AddHeader metoda

Metoda AddHeader dodaje HTML zaglavlje sa određenim vrijednostima. Ova metoda uvijek dodaje novo zaglavlje odgovoru klijentskom pretraživaču. Ova metoda ne zamjenjuje postojeće zaglavlje novim. Dodato zaglavlje se ne može ukloniti.

Ova metoda se koristi samo za "napredne" zadatke.

Response.AddHeader ime_varijable, vrijednost

Opcije:

  • varijabla_name - Ime novih parametara HTML zaglavlja.
  • vrijednost - Postavite vrijednost koja će biti zapamćena u zaglavlju.
napomene:

Da bi metoda ispravno radila, varijabla_name ne smije sadržavati donju crtu (_). Skup ServerVariables tumači donju crtu kao crticu u zaglavlju. Kao primjer, sljedeća skripta prisiljava server da pronađe parametar iz HTML zaglavlja koji se zove MY-HEADER.

Budući da HTTP protokol zahtijeva da se svi parametri zaglavlja proslijede prije tijela HTML stranice, morate pozvati metodu AddHeader u svojoj skripti prije nego što opis počne.... Postoji jedan izuzetak. Ako je svojstvo Buffer postavljeno na true, tada možete napisati AddHeader bilo gdje u skripti, ali prije prvog poziva metode Flush. U suprotnom, pozivanje metode AddHeader će izazvati grešku.

Sljedeće dvije .ASP datoteke demonstriraju ovu posljednju tačku.

vaš tekst na stranici

U ovom primjeru, stranica nije baferirana. Skripta radi međutim AddHeader se poziva prije nego što server proizvede HTML izlaz klijentu.

evo nekih informacija sa vaše stranice...

U drugom primjeru, stranica je baferovana i, kao rezultat, server ne šalje tekst klijentu dok se sama skripta ne završi ili se ne naiđe na Flush metod. Ovu metodu možete koristiti za slanje više kopija nekog parametra zaglavlja s različitim vrijednostima, kao kod zaglavlja WWW-Authenticate.

Response.AppendToLog metoda

Metoda AppendToLog dodaje red na kraj datoteke izvještaja (log-fajla) web servera. Ovu metodu možete pozvati onoliko puta koliko vam je potrebno. Svaki put kada pozovete metodu, string koji navedete biće upisan u datoteku izveštaja servera.

Response.AppendToLog vrijednost

Opcije:

  • vrijednost - Tekst koji će biti dodan datoteci izvještaja web servera. Ovaj niz ne može sadržavati znak zarez (,). Štaviše, ukupna dužina dodane linije ne bi trebalo da prelazi 80 karaktera.
napomene:

Da biste koristili ovu funkciju, morate imati omogućenu opciju URI upit u panelu "Napredna svojstva evidentiranja" za ovaj web server u IIS-u.

Metoda Response.BinaryWrite

Metoda BinaryWrite vam omogućava da upišete određene informacije u trenutni HTTP izlaz bez ikakve konverzije znakova. Ova metoda je korisna za izlaz informacija koje nisu nizovi, kao što su binarni podaci koje zahtijeva aplikacija.

Response.BinaryWrite podaci

Opcije:

  • data - Podaci namijenjeni za HTTP izlaz.

Ako imate objekt koji proizvodi niz bajtova, možete koristiti sljedeći poziv ovoj metodi da prosledite taj niz nekoj aplikaciji koja se izvodi na klijentskoj mašini.

Response.Clear metoda

Metoda Clear briše sav baferovani HTML izlaz. Međutim, ova metoda ne briše informacije međuspremnika povezane sa zaglavljem. Ovu metodu možete koristiti za upravljanje greškama. Međutim, izvođenje ove metode će rezultirati greškom ako svojstvo Response.Buffer nije istinito.

Response.CacheControl svojstvo

Ovo svojstvo nadjačava zadanu vrijednost. Kada svojstvo postavite na Javno, proxy server može keširati izlaz koji je generirao ASP.

Response.CacheControl [= zaglavlje kontrole predmemorije]

Opcije:

  • Zaglavlje kontrole predmemorije – Ova opcija kontrole zaglavlja može biti javna ili privatna.
Response.CharSet svojstvo

Svojstvo CharSet vam omogućava da dodate naziv tabele kodova znakova (na primjer, WINDOWS-1251) u HTML zaglavlje, liniju tipa sadržaja.

Response.CharSet code_table_name

Opcije:

  • charset_name - Niz koji specificira skup znakova za ovu HTML stranicu. Naziv ove tablice kodova će biti dodat u zaglavlje HTML datoteke pod parametrom "content-type".

Za ASP stranicu koja ne koristi svojstvo Response.Charset, parametar "content-type" u zaglavlju će biti sljedeći:

Content-type:text/html

Ako ASP datoteka sadrži naredbu

tada će u zaglavlju izgledati polje tipa sadržaja

Content-type:text/html; charset=Windows-1251

komentar:

Ova funkcija umeće bilo koji red u zaglavlje i ne provjerava njegovu valjanost.

Ako stranica sadrži nekoliko tagova Response.Charset, onda će svaki sljedeći zamijeniti vrijednost svojom.

Response.ContentType svojstvo

Svojstvo ContentType vam omogućava da odredite tip (tip) sadržaja HTML datoteke. Ako se ovo svojstvo ne koristi, tada se po defaultu uzima tekst/html.

Response.ContentType [=content_type]

Opcije:

  • content_type - Niz koji opisuje HTML tip sadržaja. Ovaj niz obično ima oblik "tip/podtip", gdje je tip glavna kategorija sadržaja, a podtip označava tip sadržaja. Za kompletnu listu podržanih tipova pogledajte dokumentaciju vašeg pretraživača ili HHTP specifikaciju.

Sljedeći primjer ilustruje postavljanje tipa sadržaja na Format definicije kanala (push kanali).

Drugi primjer pokazuje postavljanje svojstva na najčešće poznate vrijednosti.

Response.Expires property

Svojstvo Expires specificira vremenski period dok se HTML stranica koju je keširao pretraživač smatra da nije istekla (period skladištenja). Ako korisnik zatraži keširanu stranicu od pretraživača koja nije istekla, pretraživač je vraća direktno iz svoje keš memorije.

Response.Expires [=broj]

Opcije:

  • broj - Vrijeme u minutama prije nego što se stranica smatra "kasnom". Postavljanje ove vrijednosti na 0 uzrokuje da data stranica odmah postane "istekla".

komentar:

Ako je ovo svojstvo postavljeno više puta na stranici, koristi se najmanja vrijednost.

Response.ExpiresAbsolute svojstvo

Svojstvo ExpiresAbsolute specificira vrijeme i datum nakon kojih se HTML stranica koju je keširao pretraživač smatra isteklom (period zadržavanja je istekao). Ako korisnik zatraži keširanu stranicu od pretraživača koja nije istekla, pretraživač je vraća direktno iz svoje keš memorije. Ako je navedeno vrijeme (i datum je naveden), tada "datum isteka" ove stranice ističe u ponoć tog dana. Ako ni vrijeme ni datum nisu specificirani, tada se vrijednost dodjeljuje prema danu i vremenu kada je skripta pokrenuta.

Response.ExpiresAbsolute [= [datum] [vrijeme]]

Opcije:

  • datum - Označava datum isteka "roka trajanja". Format datuma mora biti u skladu sa standardom RFC-1123.
  • vrijeme - Označava vrijeme kada stranica ističe. Ova vrijednost se pretvara u GMT (srednje vrijeme po Greenwichu) format prije nego što se zaglavlje pošalje klijentu.

komentar:

Ako je dato svojstvo definirano više puta na stranici, tada se vrijeme isteka "perioda skladištenja" uzima kao najranija od svih navedenih vrijednosti.

Response.IsClientConnected svojstvo

Ovo svojstvo je samo za čitanje, što znači da se ovoj osobini ne mogu dodijeliti vrijednosti. Ovo svojstvo pokazuje da li je klijent povezan ili više nije povezan s poslužiteljem definiranim u posljednjem od Response.Write.

Response.IsClientConnected()

komentar:

Ovo svojstvo vam omogućava da odredite kada je korisnik povezan i kada je isključen sa servera. Na primjer, dužina vremenskog perioda između trenutka kada je server odgovorio i kada je klijent uputio zahtjev daje sigurnost da je klijent još uvijek povezan i da ima smisla nastaviti s izvršavanjem skripte.