å ¸åç HTTP æè©±
å¨ç¨æ¶ç«¯â伺æå¨åå®ï¼ä¾å¦ HTTPï¼ä¸ï¼æè©±ç±ä¸åéæ®µçµæï¼
- ç¨æ¶ç«¯å»ºç«ä¸å TCP 飿¥ï¼æè 妿å³è¼¸å±¤ä¸æ¯ TCPï¼å建ç«é©ç¶ç飿¥ï¼ã
- ç¨æ¶ç«¯ç¼éå ¶è«æ±ï¼ä¸¦çå¾ åçã
- 伺æå¨èçè«æ±ï¼ç¼éå ¶åçï¼æä¾çæ 碼åé©ç¶çæ¸æã
å¾ HTTP/1.1 éå§ï¼å¨å®æç¬¬ä¸åéæ®µå¾ä¸åéé飿¥ï¼ä¸¦ä¸ç¾å¨ç¨æ¶ç«¯è¢«æäºé²ä¸æ¥çè«æ±ï¼éæå³è第äºå第ä¸åéæ®µç¾å¨å¯ä»¥å·è¡ä»»ææ¬¡æ¸ã
建ç«é£æ¥
å¨ç¨æ¶ç«¯â伺æå¨åå®ä¸ï¼æ¯ç¨æ¶ç«¯å»ºç«é£æ¥ãå¨ HTTP 䏿é飿¥æå³èå¨åºå±¤å³è¼¸å±¤ååä¸å飿¥ï¼ééå¸¸æ¯ TCPã
å°æ¼ TCPï¼ç¨æ¼è¨ç®æ©ä¸ç HTTP 伺æå¨çé»èªç«¯å£æ¯ 80ãä¹å¯ä»¥ä½¿ç¨å ¶ä»ç«¯å£ï¼ä¾å¦ 8000 æ 8080ãè¦æåçé é¢ç URL å å«ååå飿¥å ï¼å¦æé£æ¥å æ¯ 80 åå¾è å¯ä»¥çç¥ãæéæ´å¤è©³ç´°è¨æ¯ï¼è«åè¦ URL åèã
å註ï¼ç¨æ¶ç«¯â伺æå¨æ¨¡åä¸å 許伺æå¨å¨æ²ææç¢ºè«æ±çæ æ³ä¸åç¨æ¶ç«¯ç¼éæ¸æã使¯ï¼å種 Web API 使é種ç¨ä¾æçºå¯è½ï¼å æ¬ Push APIã伺æå¨ç¼éäºä»¶å WebSockets APIã
ç¼éç¨æ¶ç«¯è«æ±
䏿¦å»ºç«äºé£æ¥ï¼ä½¿ç¨è 代çå°±å¯ä»¥ç¼éè«æ±ï¼ä½¿ç¨è 代çé常æ¯ç¶²é ç覽å¨ï¼ä½ä¹å¯ä»¥æ¯å ¶ä»ä»»ä½æ±è¥¿ï¼ä¾å¦ç¬è²ï¼ãç¨æ¶ç«¯è«æ±ç±ææ¬æä»¤çµæï¼ç¨ CRLFï¼åè»ç¬¦ï¼å¾è·æè¡ç¬¦ï¼åéï¼åæä¸åå¡ï¼
-
第ä¸è¡å å«ä¸åè«æ±æ¹æ³ï¼å¾é¢è·èå®ç忏ï¼
- æä»¶çè·¯å¾ï¼ä½çºä¸å¸¶å宿ååççµå° URL
- HTTP åå®çæ¬
-
æ¥ä¸ä¾çè¡ä»£è¡¨ä¸å HTTP æ¨é ï¼çµ¦ä¼ºæå¨æä¾éæ¼åªç¨®é¡åçæ¸ææ¯é©åçè¨æ¯ï¼ä¾å¦ï¼ä»éº¼èªè¨ãä»éº¼ MIME é¡åï¼ï¼æè å ¶ä»æ¹è®å ¶è¡çºçæ¸æï¼ä¾å¦ï¼å¦æå·²ç¶ç·©åï¼åä¸ç¼éåæï¼ãéäº HTTP æ¨é å½¢æä¸åå¡ï¼ä»¥ç©ºè¡çµæã
-
æå¾ä¸å塿¯ä¸åå¯é¸çæ¸æå¡ï¼å ¶ä¸å¯è½å å«ä¸»è¦ç± POST æ¹æ³ä½¿ç¨çé²ä¸æ¥æ¸æã
ç¯ä¾è«æ±
æå developer.mozilla.org çæ ¹é é¢ï¼https://developer.mozilla.org/ï¼ï¼ä¸¦å訴伺æå¨ä½¿ç¨è
代ç妿å¯è½çè©±å¸æä»¥æ³èªé¡¯ç¤ºé é¢ï¼
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr
è«æ³¨ææå¾ç空è¡ï¼éå°æ¸æå¡èæ¨é å¡åéãç±æ¼å¨ HTTP æ¨é 䏿²ææä¾ Content-Lengthï¼å æ¤é忏æå¡æ¯ç©ºçï¼æ¨è¨èæ¨é ççµæï¼ä½¿å¾ä¼ºæå¨ä¸æ¥æ¶å°éå空è¡å°±è½å¤ èçè«æ±ã
ä¾å¦ï¼ç¼é表å®ççµæï¼
POST /contact_form.php HTTP/1.1
Host: developer.mozilla.org
Content-Length: 64
Content-Type: application/x-www-form-urlencoded
name=Joe%20User&request=Send%20me%20one%20of%20your%20catalogue
è«æ±æ¹æ³
HTTP å®ç¾©äºä¸çµè«æ±æ¹æ³ï¼æç¤ºå°è³æºå·è¡çæéæä½ãéç¶å®åä¹å¯ä»¥æ¯åè©ï¼ä½éäºè«æ±æ¹æ³ææè¢«ç¨±çº HTTP åè©ãæå¸¸è¦çè«æ±æ¯ GET å POSTï¼
GETæ¹æ³è«æ±æå®è³æºçæ¸æè¡¨ç¤ºã使ç¨GETçè«æ±æå æª¢ç´¢æ¸æãPOSTæ¹æ³å°æ¸æç¼éå°ä¼ºæå¨ï¼ä»¥ä¾¿å®å¯ä»¥æ´æ¹å ¶çæ ã鿝éå¸¸ç¨æ¼ HTML 表å®çæ¹æ³ã
伺æå¨åæççµæ§
飿¥ç代çç¼éäºå ¶è«æ±å¾ï¼Web 伺æå¨å°å ¶é²è¡èçï¼æçµè¿åä¸ååæãèç¨æ¶ç«¯è«æ±é¡ä¼¼ï¼ä¼ºæå¨åæç±ææ¬æä»¤çµæï¼ç¨ CRLF åéï¼åæä¸åå¡ï¼
- 第ä¸è¡ï¼çæ è¡ï¼ç±ä½¿ç¨ç HTTP çæ¬ç確èªååæçæ 碼ï¼ä»¥åå ¶ç°¡çç人é¡å¯è®ææ¬å«ç¾©ï¼çµæã
- æ¥ä¸ä¾çè¡è¡¨ç¤ºç¹å®ç HTTP æ¨é ï¼åç¨æ¶ç«¯æä¾æéç¼éçæ¸æçè¨æ¯ï¼ä¾å¦é¡åãæ¸æå¤§å°ã使ç¨çå£ç¸®æ¼ç®æ³ãæéç·©åçæç¤ºï¼ãèç¨æ¶ç«¯è«æ±ç HTTP æ¨é å¡é¡ä¼¼ï¼éäº HTTP æ¨é å½¢æä¸å以空è¡çµæçå¡ã
- æå¾ä¸å塿¯ä¸åæ¸æå¡ï¼å ¶ä¸å å«å¯é¸çæ¸æã
ç¯ä¾åæ
æåçç¶²é åæï¼
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 55743
Connection: keep-alive
Cache-Control: s-maxage=300, public, max-age=0
Content-Language: en-US
Date: Thu, 06 Dec 2018 17:37:18 GMT
ETag: "2e77ad1dc6ab0b53a2996dfd4653c1c3"
Server: meinheld/0.6.1
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding,Cookie
Age: 7
<!doctype html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8">
<title>åºæ¬ç¶²é </title>
</head>
<body>
<h1>åºæ¬ HTML ç¶²é </h1>
<p>ååï¼ä¸çï¼</p>
</body>
</html>
éç¥è«æ±çè³æºå·²æ°¸ä¹ ç§»åï¼
HTTP/1.1 301 Moved Permanently
Server: Apache/2.4.37 (Red Hat)
Content-Type: text/html; charset=utf-8
Date: Thu, 06 Dec 2018 17:33:08 GMT
Location: https://developer.mozilla.org/ (this is the new link to the resource; it is expected that the user-agent will fetch it)
Keep-Alive: timeout=15, max=98
Accept-Ranges: bytes
Via: Moz-Cache-zlb05
Connection: Keep-Alive
Content-Length: 325 (the content contains a default page to display if the user-agent is not able to follow the link)
<!doctype html>⦠(contains a site-customized page helping the user to find the missing resource)
éç¥è«æ±çè³æºä¸åå¨ï¼
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
Content-Length: 38217
Connection: keep-alive
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-Language: en-US
Date: Thu, 06 Dec 2018 17:35:13 GMT
Expires: Thu, 06 Dec 2018 17:35:13 GMT
Server: meinheld/0.6.1
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding,Cookie
X-Cache: Error from cloudfront
<!doctype html>⦠(contains a site-customized page helping the user to find the missing resource)
åæçæ 碼
HTTP åæçæ 碼æç¤ºç¹å®ç HTTP è«æ±æ¯å¦æå宿ãåæåçºäºé¡ï¼è³è¨åæãæååæãéæ°å°åè¨æ¯ãç¨æ¶ç«¯é¯èª¤åæå伺æå¨é¯èª¤åæã