Par HTTP protokolu
- HTTP (HyperText Transfer Protocol)
- HTTP protokola sākotnējo versiju piedāvāja T.B.Lee; HTTP ir Weba pamatprotokols; tas radās 90-to gadu sākumā, vienlaikus ar valodu HTML, URL adresēm, pirmajiem Web serveriem un Web klientiem un kopš 1995 pārspēja FTP un citus protokolus pēc trafika apjoma Internetā.
- Pašreizējā versija: HTTP 1.1 ir specificēts RFC2616 dokumentā, sk. http://www.w3.org/Protocols/rfc2616/rfc2616.html; tas sīkāk aprakstīts W3C mājaslapā: http://www.w3.org/Protocols/
- HTTP kā stabilu veidojumu vairs neviens tālāk neattīsta, toties uz šī protokola pamata veidojušies daži citi protokoli: HTTPS (kriptogrāfiski nodrošināts HTTP) un XMLP jeb SOAP
- HTTP protokols vislabāk iet cauri ugunsmūriem; šī iemesla dēļ IRC, RMI, CORBA utml. protokolus mēdz "tunelēt" pa HTTP - ārējs serveris saņem HTTP pieprasījumus un pārtulko tos citos protokolos
MIME (Multipurpose Internet Mail Extension) tipi
MIME (Multipurpose Internet Mail Extension)
| Tips | Nozīme |
| application/pdf | Adobes PDF fails |
| application/x-java-archive | JAR fails |
| application/x-java-vm | Javas CLASS fails |
| application/zip | ZIP arhīvs |
| text/css | CSS fails |
| text/html | HTML fails |
| application/xhtml+xml | XHTML fails |
| text/plain | Vienkārša teksta (TXT) fails |
| text/xml | XML fails |
| image/gif | GIF bilde |
| image/jpeg | JPEG bilde |
| image/png | PNG bilde |
Web serveris norāda atgriežamā faila tipu ("Content-type" hederis); "x-" prefikss apakštipam norāda, ka šis faila tips nav oficiāli reģistrēts. Nākotnē ar divdaļīgiem MIME tipiem var rasties grūtības ("vārdtelpu konflikti"); būtu labāk, ja tie būtu hierarhiski tāpat kā Javas pakotnes.
URLi
URL (Uniform Resource Locator) - šobrīd neformāls termins - adrese dažos populāros protokolos (Web, FTP, Usenet, Gopher). Universālāki termini - URN, URI, utml. Sk. http://www.w3.org/Addressing/
- Absolūtie URLi: http://www.delfi.lv/news/national/politics/article.php?id=4300951
- Relatīvie URLi: ../politics/article.php?id=4300951
- "Pusabsolūtie URLi: /styles/default.css
URLa sintakse:
protokols://[lietotajs:parole@]hosts[:ports]/taka/
fails.extension[?querystring][#segments]
- URLam vajadzētu visu laiku norādīt uz konceptuāli to pašu resursu (piemēram, šīsdienas avīzes numuru), lai gan tur iegūstamais saturs var mainīties
- Labs URL nav garš - to viegli iegaumēt un uzrakstīt, teiksim, uz papīra salvetes
URLs var saturēt konkrētam gadskaitlim piesietu vārda-došanas shēmu
http://www.nsf.gov/cgi-bin/pubsys/browser/odbrowse.pl
- "piesiets" tehnoloģijai
http://www.nsf.gov/pubsys/ods/getpub.cfm?nsf9814
- joprojām ne visai labs
http://www.nsf.gov/pubs/1998/nsf9814/nsf9814.htm
- labs
http://www.w3.org/TR/2002/REC-xhtml1-20020801/
- W3C arī tā dara
Cepumiņi
- Viens no galvenajiem sesijas uzturēšanas līdzekļiem - Web serveris ar cepumiņu iezīmē klientu, lai pazītu nākamo pieprasījumu no klienta
- Beztermiņa cepumiņi dzīvo uz vienu pārlūkprogrammas sesijas laiku, bet termiņa cepumiņi dzīvo norādīto laiku
- Cepumiņus var nolasīt tikai tas hosts, kurš tos ir uzlicis, bet "draudzīgu aplikāciju" sadarbība var novest pie tā, ka klienta IDs ir redzams vienlaikus vairākiem hostiem.
HTTP pieprasījuma metodes
- GET - normāls links vai adreses ierakstīšana pārlūkprogrammas lodziņā, neliela forma
- POST - liela forma, lietotāja paroļu nosūtītšana, failu augšupielāde
<form action="url-adrese" method="GET">
<input type="text" name="field1">
...
<input type="submit" value="Nosūtīt">
</form>
http://www.google.com/search?ie=UTF-8&q=%C5%A0%C5%86ukurs
HTTP pieprasījuma hederi
- Accept
- Kādus MIME tipus pārlūkprogramma saprot; atsevišķos gadījumos Web serveris var sūtīt 404 (Page Not Found) kodu, ja pārlūkprogramma nesaprot pieprasītā resursa MIME tipu
- Accept-Encoding
- Piemēram "gzip" un "compress" - HTTP satura saspiešanas tehnoloģija
- Authorization
- Klients nosūta savus autorizācijas parametrus
- Connection
- "keep-alive" vai "close". HTTP 1.1 iespēja veidot ilgstošākas HTTP konekcijas ļauj efektīvāk nosūtīt, piemēram, dokumentu kopā ar bildēm
- Content-Length
- POST gadījumā - cik daudz formas datu
- Cookie
- Sīkdatnes, kuras pārlūkprogramma ir saņēmusi
- Host
- Kurš hosts izdarīja pieprasījumu
- Referer
- Ja pa linku ejam no Lapas A uz Lapu B, tad GET pieprasījumā lapai B minēts "Referer: Lapas_A_adrese". To var izmantot baneru reklāmas efektivitātes noteikšanai, utml.
Parasti visus šos hederus speciāli uzprogrammēts Web klients var izmainīt pēc patikas.
HTTP atbildes hederi
- Cache-Control - "no-cache" norāda, ka nevajag kešot
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
- Connection - "keep-alive" vai "close"
- Content-Length - Cik garš ir saturs (īpaši svarīgi, ja konekcija paliek atvērta)
- Content-Type - MIME tips un kodējums. Piemēram:
Content-type: text/html; charset=windows-1257
- Expires - Laiks, kad lappuse kļūst novecojusi - milisekundes
- Last-Modified - Kad uz servera dokuments pēdējo reizi mainīts
- Location - Jaunā lappuses vieta (ja lieto 302 atgr. kodu)
- Refresh - Pārlūkprogramma pēc norādītā sekunžu skaita lūdz jaunu - atjaunotu lappusi
response.setIntHeader("Refresh", 30);
- Set-Cookie - Uzstāda jaunu cepumiņu
HTTP atgriešanās kodi
- 200 (OK)
- Dokuments tiek sekmīgi nosūtīts
- 204 (No Content)
- Pieprasījums saņemts sekmīgi, bet nenosūta jaunu lapu
- 302 (Moved Temporarily)
- Izmanto kopā ar "Location:" hederi, lai nosūtītu servera puses redirektu
- 304 (Not Modified)
- Serveris nesūta dokumentu, bet liek klientam lietot kešoto versiju
- 401 (Unauthorized)
- Klients nav pareizi uzstādījis "Authorization" hederi
- 403 (Forbidden)
- Serveris neļauj skatīties pieprasīto resursu (piemēram, nav atļauts lasīt direktorijas struktūru)
- 404 (Not Found)
- Visizplatītākais kods
- 500 (Internal Server Error)
- Kļūda servera puses aplikācijā
Logfaili
OC4J logfaili ir sekojošie: c:\oc4j\j2ee\home\log\http-web-access.log un citi faili šajā direktorijā.
127.0.0.1 - - [18/Nov/2002:22:56:58 +0200] "GET / HTTP/1.1" 200 2619
127.0.0.1 - - [18/Nov/2002:22:56:59 +0200] "GET /blaf.css HTTP/1.1" 200 5832
127.0.0.1 - - [18/Nov/2002:23:01:00 +0200] "GET /examples/jsp HTTP/1.1" 301 0
127.0.0.1 - - [18/Nov/2002:23:01:00 +0200] "GET /examples/jsp/ HTTP/1.1" 200 7135
OC4J administrēšana
Instalēt OC4J, izvēloties "admin" paroli
c:\oc4j\j2ee\home>java -jar oc4j.jar -install
Auto-unpacking C:\oc4j\j2ee\home\applications\dms0.war... done.
Auto-unpacking C:\oc4j\j2ee\home\applications\dms.war... done.
Enter an admin password to use: base
Confirm admin password: base
Installation done
OC4J servera piestartēšana:
c:\oc4j\j2ee\home>java -jar oc4j.jar
OC4J apturēšana
java -jar c:/oc4j/j2ee/home/admin.jar
ormi://localhost:23791 admin base -shutdown
OC4J pārstartēšana:
java -jar c:/oc4j/j2ee/home/admin.jar
ormi://localhost:23791 admin base -restart
Pēdējās 2 komandas vajadzīgas bieži - tās var ielikt BAT failos.