超文件傳輸協定
HTTP
HyperText Transfer Protocol
維基:超文本傳輸協定
http://zh.wikipedia.org/wiki/HTTP
RFC 2616
HTTP Request Method:
HTTP/1.1 協議中共定義了八種方法 Method,來表明Request-URI指定的資源的不同操作方式 (必須大寫):
OPTIONS
-
返回伺服器針對特定資源所支持的HTTP請求方法。也可以利用向Web伺服器發送'*'的請求來測試伺服器的功能性。
- HEAD
-
HEAD 同 GET, 但 Server端只回應 http header,不回應內容
- GET
-
網頁、圖片、檔案 下載(看網頁)
- POST
-
網頁上填寫資料送出、填表上傳檔案 幾乎這種
- PUT
- 向指定資源位置上傳其最新內容。
- DELETE
-
請求伺服器刪除Request-URI所標識的資源。
- TRACE
-
回顯伺服器收到的請求,主要用於測試或診斷。
- CONNECT
- HTTP/1.1協議中預留給能夠將連接改為管道方式的代理伺服器。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
http://zh.wikipedia.org/zh-tw/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE
狀態代碼的第一個數字代表當前回應的類型:
- 1xx 消息——請求已被伺服器接收,繼續處理
- 2xx 成功——請求已成功被伺服器接收、理解、並接受
- 3xx 重定向——需要後續操作才能完成這一請求
- 4xx 請求錯誤——請求含有詞法錯誤或者無法被執行
- 5xx 伺服器錯誤——伺服器在處理某個正確請求時發生錯誤
參考
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
note:
301 代表 Permanent Redirect(永久定址轉移)
302 則是暫時定址轉移
Ref:http://zh.wikipedia.org/zh-tw/HTTP%E7%8A%B6%E6%80%81%E7%A0%81#3xx.E9.87.8D.E5.AE.9A.E5.90.91
一些傳輸過程的範例
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK (server端回應的內容)
Date: Mon, 05 Oct 2009 00:55:23 GMT
Server: Apache
X-Powered-By: PHP/4.4.9
Set-Cookie: dat=123aee; path=/; domain=test.com.tw
Expires: Thu, 15 Oct 2009 00:55:23 GMT
Cache-Control: public, max-age=864000
Last-Modified: Mon, 27 Apr 2009 07:05:43 GMT
Connection: close
Content-Type: text/html
Connection closed by foreign host.
(HEAD 同 GET, 但 Server端只回應 http header,不回應內容)
# telnet localhost 80
OPTIONS * HTTP/1.1
HOST: localhost
bu ekranda birkez daha
HTTP/1.1 200 OK (server端回應的內容)
Date: Wed, 13 Jun 2007 08:25:21 GMT
Server: Apache/2.2.0 (Unix)
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Length: 0
Content-Type: text/plain
TraceEnable methodunu ekledikten sonra
# telnet localhost 80
OPTIONS * HTTP/1.1
HOST: localhost
bu ekranda birkez daha
HTTP/1.1 200 OK (server端回應的內容)
Date: Wed, 13 Jun 2007 08:25:21 GMT
Server: Apache/2.2.0 (Unix)
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Content-Type: text/plain
經由 http proxy 來發信
# telnet 192.168.0.85 80 (proxy server)
Trying 192.168.0.85...
Connected to 192.168.0.85.
Escape character is '^]'.
CONNECT xx.xx.xx.xx:25 HTTP/1.0
HTTP/1.0 200 Connection established
220 abc.com.tw ESMTP Postfix (接下來就是 SMTP protocol)
EHLO test.com
250-abc.com.tw
250-PIPELINING
250-SIZE 51200000
250-VRFY
250-ETRN
250-AUTH LOGIN
250 8BITMIME
MAIL FROM: [email protected]
250 Ok
RCPT TO: [email protected]
250 Ok
DATA
354 End data with .
Subject: proxy smtp test
test
test
.
250 Ok: queued as 68EF1632EF
QUIT
221 Bye
Connection closed by foreign host.