摘要:重定向狀態碼,需要進行附加操作以完成請求永久性重定向。該狀態碼表示發送的請求需要有通過認證認證認證的認證信息。該狀態碼表明服務器暫時處于超負載或正在進行停機維護,現在無法處理請求。
HTTP協議知識點整理 一、HTTP協議的工作特點和工作原理 工作特點
基于B/S模式
通信開銷小、簡單快速、傳輸成本低
使用靈活、可試用超文本傳輸協議
節省傳輸時間
無狀態
工作原理客戶端發送請求給服務器,創建一個TCP鏈接,指定端口號,默認80,連接到服務器,服務器監聽瀏覽器請求,一旦監聽到客戶端請求,分析請求類型后,服務器會向客戶端放回狀態信息和數據內容。
二、HTTP協議請求方法 1. GET:獲取資源GET 方法用來請求訪問已被 URI 識別的資源。指定的資源經服務器端解析后返回響應內容。
2. POST:傳輸實體主體POST 方法用來傳輸實體的主體。
雖然用 GET 方法也可以傳輸實體的主體,但一般不用 GET 方法進行傳輸,而是用 POST 方法。雖說 POST 的功能與 GET 很相似,但POST 的主要目的并不是獲取響應的主體內容。
PUT 方法用來傳輸文件。就像 FTP 協議的文件上傳一樣,要求在請求報文的主體中包含文件內容,然后保存到請求 URI 指定的位置。
但是,鑒于 HTTP/1.1 的 PUT 方法自身不帶驗證機制,任何人都可以上傳文件 , 存在安全性問題,因此一般的 Web 網站不使用該方法。若配合 Web 應用程序的驗證機制,或架構設計采用 REST(REpresentationalState Transfer,表征狀態轉移)標準的同類 Web 網站,就可能會開放使用 PUT 方法。
HEAD 方法和 GET 方法一樣,只是不返回報文主體部分。用于確認URI 的有效性及資源更新的日期時間等。
5. DELETE:刪除文件DELETE 方法用來刪除文件,是與 PUT 相反的方法。DELETE 方法按請求 URI 刪除指定的資源。
但是,HTTP/1.1 的 DELETE 方法本身和 PUT 方法一樣不帶驗證機制,所以一般的 Web 網站也不使用 DELETE 方法。當配合 Web 應用程序的驗證機制,或遵守 REST 標準時還是有可能會開放使用的。
OPTIONS 方法用來查詢針對請求 URI 指定的資源支持的方法。
7. TRACE:追蹤路徑TRACE 方法是讓 Web 服務器端將之前的請求通信環回給客戶端的方法。
發送請求時,在 Max-Forwards 首部字段中填入數值,每經過一個服務器端就將該數字減 1,當數值剛好減到 0 時,就停止繼續傳輸,最后接收到請求的服務器端則返回狀態碼 200 OK 的響應。
客戶端通過 TRACE 方法可以查詢發送出去的請求是怎樣被加工修改 / 篡改的。這是因為,請求想要連接到源目標服務器可能會通過代理中轉,TRACE 方法就是用來確認連接過程中發生的一系列操作。
但是,TRACE 方法本來就不怎么常用,再加上它容易引發 XST(Cross-Site Tracing,跨站追蹤)攻擊,通常就更不會用到了。
狀態碼的職責是當客戶端向服務器端發送請求時,描述返回的請求結果。
借助狀態碼,用戶可以知道服務器端是正常處理了請求,還是出現了錯誤。
表示從客戶端發來的請求在服務器端被正常處理了。
204 No Content該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體。比如,當從瀏覽器發出請求處理后,返回 204 響應,那么瀏覽器顯示的頁面不發生更新。
一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用。
該狀態碼表示客戶端進行了范圍請求,而服務器成功執行了這部分的 GET 請求。響應報文中包含由 Content-Range 指定范圍的實體內容。
3. 3XX Redirection(重定向狀態碼,需要進行附加操作以完成請求) 301 Moved Permanently永久性重定向。該狀態碼表示請求的資源已被分配了新的 URI,以后應使用資源現在所指的 URI。也就是說,如果已經把資源對應的 URI保存為書簽了,這時應該按 Location 首部字段提示的 URI 重新保存。
302 Move temporarily臨時性重定向。該狀態碼表示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問。
和 301 Moved Permanently 狀態碼相似,但 302 狀態碼代表的資源不是被永久移動,只是臨時性質的。換句話說,已移動的資源對應的URI 將來還有可能發生改變。比如,用戶把 URI 保存成書簽,但不會像301 狀態碼出現時那樣去更新書簽,而是仍舊保留返回 302 狀態碼的頁面對應的 URI。
該狀態碼表示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,而文檔的內容(自上次訪問以來或者根據請求的條件)并沒有改變。
4. 4XX Client Error(客戶端錯誤狀態碼,服務器無法處理請求) 400 Bad Request該狀態碼表示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容后再次發送請求。
401 Unauthorized該狀態碼表示發送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證信息。另外若之前已進行過 1 次請求,則表示用戶認證失敗。
返回含有 401 的響應必須包含一個適用于被請求資源的 WWW-Authenticate 首部用以質詢(challenge)用戶信息。當瀏覽器初次接收到 401 響應,會彈出認證用的對話窗口。
該狀態碼表明對請求資源的訪問被服務器拒絕了。
未獲得文件系統的訪問授權,訪問權限出現某些問題(從未授權的發送源 IP 地址試圖訪問)等情況都可能是發生 403 的原因。
該狀態碼表明服務器上無法找到請求的資源。
405 Method Not Allowed表明當前請求使用的 HTTP 方法不被服務器允許。
例如使用GET方法請求需要POST方法的數據。
該狀態碼表明服務器端在執行請求時發生了錯誤。有可能是 Web 應用存在的 bug 或某些臨時的故障。
502 Bad Gateway該狀態碼表明服務器和網關/代理通信出錯。
503 Service Unavailable該狀態碼表明服務器暫時處于超負載或正在進行停機維護,現在無法處理請求。
504 Gateway Timeout 網關超時該狀態碼表明服務器作為網關或代理,但是沒有及時從上游服務器收到請求。
四、HTTP協議常見請求、響應頭 1. HTTP/1.1 通用首部字段通用首部字段是指,請求報文和響應報文雙方都會使用的首部。
Cache-Control 設置緩存的工作機制指令的參數是可選的,多個指令之間通過 , 分隔。
Cache-Control: private, max-age=0, no-cache
緩存請求指令
指令 | 參數 | 說明 |
---|---|---|
no-cache | 無 | 強制向源服務器再次驗證 |
no-store | 無 | 不緩存請求或響應的任何內容 |
max-age = [ 秒] | 必需 | 響應的最大Age值 |
max-stale( = [ 秒]) | 可省略 | 接收已過期的響應 |
min-fresh = [ 秒] | 必需 | 期望在指定時間內的響應仍有效 |
no-transform | 無 | 代理不可更改媒體類型 |
only-if-cached | 無 | 從緩存獲取資源 |
cache-extension | - | 新指令標記(token) |
緩存響應指令
指令 | 參數 | 說明 |
---|---|---|
public | 無 | 可向任意方提供響應的緩存 |
private | 可省略 | 僅向特定用戶返回響應 |
no-cache | 可省略 | 緩存前必須先確認其有效性 |
no-store | 無 | 不緩存請求或響應的任何內容 |
no-transform | 無 | 代理不可更改媒體類型 |
must-revalidate | 無 | 可緩存但必須再向源服務器進行確認 |
proxy-revalidate | 無 | 要求中間緩存服務器對緩存的響應有效性再進行確認 |
max-age = [ 秒] | 必需 | 響應的最大Age值 |
s-maxage = [ 秒] | 必需 | 公共緩存服務器響應的最大Age值 |
cache-extension | - | 新指令標記(token) |
Connection 首部字段具備如下兩個作用。
控制不再轉發給代理的首部字段
管理持久連接
Connection: keep-alive
Connection: Upgrade
Date: Tue, 03 Jul 2012 04:40:59 GMT Date: Tue, 03-Jul-12 04:40:59 GMT Date: Tue Jul 03 04:40:59 2012
Content-Type: application/x-www-form-urlencoded Content-Type: text/html; charset=utf-8Content-Encoding 設置數據使用的編碼類型
Content-Encoding: gzipContent-Length 請求體或響應體的字節長度
Content-Length: 3482. 常見請求頭字段 Host 設置服務器域名和TCP端口號,如果使用的是服務請求標準端口號,端口號可以省略
Host: en.wikipedia.org:8080 Host: en.wikipedia.orgAccept 設置接受的內容類型
Accept: text/plainAccept-Charset 設置接受的字符編碼
Accept-Charset: utf-8Accept-Encoding 設置接受的編碼格式
Accept-Encoding: gzip, deflateOrigin 標識跨域資源請求(請求服務端設置Access-Control-Allow-Origin響應字段)
Origin: http://www.example-social-network.comUser-Agent 用戶代理的字符串值
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0Cookie 設置服務器使用Set-Cookie發送的http cookie
Cookie: $Version=1; Skin=new;Authorization 設置HTTP身份驗證的憑證
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==Referer 告知服務器請求的原始資源的 URI
Referer: http://en.wikipedia.org/wiki/Main_PageX-Forwarded-For 客戶端通過HTTP代理或者負載均衡器連接的web服務器的原始IP地址
X-Forwarded-For: client1, proxy1, proxy2 X-Forwarded-For: 129.78.138.66, 129.78.64.103Forwarded 客戶端通過http代理連接web服務的源信息
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 Forwarded: for=192.0.2.43, for=198.51.100.173. 常見響應頭字段 Allow 通知客戶端請求所支持的 HTTP 方法
Allow: GET, HEADAccess-Control-Allow-Origin 指定哪些站點可以參與跨站資源共享
Access-Control-Allow-Origin: *Expires 設置響應體的過期時間
Expires: Thu, 01 Dec 1994 16:00:00 GMTLast-Modified 設置請求對象最后一次的修改日期
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMTAge 對象在代理緩存中暫存的秒數
Age: 3600ETag 特定版本資源的標識符,通常是消息摘要
ETag: "737060cd8c284d8af7ad3082f209582d"Refresh 重定向
Refresh: 5; url=http://www.w3.org/pub/WWW/People.htmlSet-Cookie 設置HTTP Cookie
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31384.html
摘要:使用中文函數名和變量名面積長寬長寬面積合法,輸出中文符號函數名。類型聲明類型聲明允許函數在調用時要求參數為特定類型。需要使用自己的包裝函數來將這些結構用作可變函數。匿名函數目前是通過類來實現的。 一、函數的定義 1. 函數的命名規則 函數名可以包含字母、數字、下劃線,不能以數字開頭。 function Func_1(){ } //合法 function func1(){ } //合法 ...
摘要:聲明靜態變量時不能用表達式的結果對其賦值正確錯誤使用表達式的結果賦值錯誤使用表達式的結果賦值靜態變量與遞歸函數靜態變量提供了一種處理遞歸函數的方法。 一、變量的定義 1. 變量的命名規則 變量名可以包含字母、數字、下劃線,不能以數字開頭。 $Var_1 = foo; // 合法 $var1 = foo; // 合法 $_var1 = foo; // 合法 $Var-1 = foo; /...
摘要:是決定正則表達式匹配規則的主要部分。二分隔符分隔符的選擇當使用函數的時候,正則表達式必須由分隔符閉合包裹。果分隔符經常在正則表達式內出現,最好使用其他分隔符來提高可讀性。需要將一個字符串放入正則表達式中使用時,可以用函數對其進行轉義。 一、簡介 1. 什么是正則表達式 正則表達式(Regular Expression)就是用某種模式去匹配一類字符串的一種公式。正則表達式使用單個字符串來...
摘要:除法運算符總是返回浮點數。取模運算符的結果和被除數的符號正負號相同。使用位運算符時要特別注意優先級。太空船運算符組合比較符當小于等于大于時分別返回一個小于等于大于的值。遞增遞減運算符不影響布爾值。 一、算術運算符 1. 概覽 例子 名稱 結果 $a + $b 加法 $a 和 $b 的和。 $a - $b 減法 $a 和 $b 的差。 $a * $b 乘法 $a 和 ...
閱讀 4276·2021-10-13 09:39
閱讀 482·2021-09-06 15:02
閱讀 3229·2019-08-30 15:53
閱讀 1040·2019-08-30 13:04
閱讀 2029·2019-08-30 11:27
閱讀 2010·2019-08-26 13:51
閱讀 2092·2019-08-26 11:33
閱讀 2902·2019-08-26 10:36