http報文和協議首部
http報文
3》報文格式
request 報文
<method> <request-URL> <version>
<headers>
<entity-body>
response 報文
<version> <status> <reason-phrase>
<headers>
<entity-body>
4》method:請求方法,標明客戶端但願服務器對資源執行的動做。
GET :從服務器獲取一個資源
HEAD :只從服務器獲取文檔的響應首部
POST :向服務器輸入數據,一般會再由網關程序繼續處理
PUT :將請求的主體部分存儲在服務器中,如上傳文件
DELETE :請求刪除服務器上指定的文檔
TRACE :追蹤請求到達服務器中間通過的代理服務器
OPTIONS :請求服務器返回對指定資源支持使用的請求方法
5》version:
HTTP/<major>.<minor>
6》status:
三位數字,標記請求處理過程當中發生的狀況。
1xx :100-101 信息提示
2xx :200-206 成功
3xx :300-305 重定向
4xx :400-415 錯誤類信息,客戶端錯誤
5xx :500-505 錯誤類信息,服務器端錯誤
經常使用狀態碼
200:成功,請求數據經過響應報文的entity-body 部分發送;OK
301:請求的URL 指向的資源已經被刪除;但在響應報文中經過首部Location 指明瞭資源如今所處的新位置;Moved Permanently
302:響應報文Location置 指明資源臨時新位置 Moved Temporarily
304:客戶端發出了條件式請求,但服務器上的資源不曾發生改變,則經過響應此響應狀態碼通知客戶端;Not Modified
401:須要輸入帳號和密碼認證方能訪問資源;Unauthorized
403:請求被禁止;Forbidden
404:服務器沒法找到客戶端請求的資源;Not Found
500:服務器內部錯誤;Internal Server Error
501:
502:代理服務器從後端服務器收到了一條僞響應,如沒法鏈接到網關;Bad Gateway
503:服務不可用,臨時服務器維護或過載,服務器沒法處理請求
504:網關超時
7》reason-phrase:
狀態碼所標記的狀態的簡要描述
8》headers:每一個請求或響應報文可包含任意個首部;每一個首部都有首部名稱,後面跟一個冒號,然後跟一個可選空格,接着是一個值。
9》entity-body;請求時附加的數據或響應時附加的數據。
http協議首部
1》首部的分類:
通用首部
請求首部
響應首部
實體首部
擴展首部
2》通用首部:
Date:報文的建立時間
Connection:鏈接狀態,如keep-alive, close
Via:顯示報文通過的中間節點(代理,網關)
Cache-Control:控制緩存,如緩存時長
MIME-Version: 發送端使用的MIME
3》請求首部:
Accept:通知服務器本身可接受的媒體類型
Accept-Charset: 客戶端可接受的字符集
Accept-Encoding:客戶端可接受編碼格式,如gzip
Accept-Language:客戶端可 接受的語言
Client-IP: 請求的客戶端IP
Host: 請求的服務器名稱和端口號
Referer:跳轉至當前URI 的前一個URL
User-Agent:客戶端代理,瀏覽器版本
1。條件式請求首部:
Expect:容許客戶端列出某請求所要求的服務器行爲
If-Modified-Since :自從指定的時間以後,請求的資源是否發生過修改
If-Unmodified-Since :與上面相反
If-None-Match :本地緩存中存儲的文檔的ETag 標籤是否與服務器文檔的Etag 不匹配
If-Match :與上面相反
2。安全請求首部:
Authorization:向服務器發送認證信息,如帳號和密碼
Cookie:客戶端向服務器發送cookie
Cookie2:用於說明請求端支持的cookie 版本
3。代理請求首部:
Proxy-Authorization: 向代理服務器認證
4》響應首部:
信息性:
Age :從最初建立開始,響應持續時長
Server :服務器程序軟件名稱和版本
協商首部:某資源有多種表示方法時使用
Accept-Ranges :服務器可接受的請求範圍類型
Vary :服務器查看的其它首部列表
安全響應首部:
Set-Cookie :向客戶端設置cookie
Set-Cookie2: 以上面類似
WWW-Authenticate:來自服務器對客戶端的質詢列表
5》實體首部:
Allow: 列出對此資源實體可以使用的請求方法
Location :告訴客戶端真正的實體位於何處
Content-Encoding: 對主體執行的編碼
Content-Language: 理解主體時最適合的語言
Content-Length: 主體的長度
Content-Location: 實體真正所處位置
Content-Type :主體的對象類型,如text
緩存相關:
ETag :實體的擴展標籤
Expires :實體的過時時間
Last-Modified :最後一次修改的時間
6)mod_deflate 模塊
使用mod_deflate 模塊壓縮頁面優化傳輸速度
適用場景:
(1) 節約帶寬,額外消耗CPU ;同時,可能有些較老瀏覽器不支持
(2) 壓縮適於壓縮的資源,例如文本文件
LoadModule deflate_module modules/mod_deflate.so
#mod_deflate configuration
SetOutputFilter DEFLATE
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
排除特定舊版本的瀏覽器,不支持壓縮
#Netscape 4.x 只壓縮text/html
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Netscape 4.06-08本 三個版本不壓縮
BrowserMatch ^Mozilla/4\.0[678] no-gzip
#MSIE masquerade as Netscape,but it is fine
Internet Explorer 標識自己爲「Mozilla / 4 」,但其實是可以處理請求的壓縮。若是用戶代理首部匹配字符串「MSIE 」(「B」爲單詞邊界」),就關閉以前定義的限制
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html