<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [天下無難試之HTTP協議面試刁難大全(上)](https://juejin.im/post/5ab308e9f265da238e0da39b) [圖解HTTP 京東](http://item.jd.com/11449491.html) [http mdn](https://developer.mozilla.org/zh-CN/docs/Web/HTTP) # HTTP協議 ## 請求報文的構成 請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。 ![](https://img.kancloud.cn/5b/37/5b37b3747a172d96e276a599a0e4e67d_827x390.png) ## 響應報文的構成 響應報文基本上由協議版本、狀態碼(表示請求成功或失敗的數字代碼)、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體主體構成 ![](https://img.kancloud.cn/27/b2/27b204083a5e25382c4ced562e6da62e_696x384.png) ## HTTP 是不保存狀態的協議 HTTP協議是無狀態協議,HTTP 協議自身不對請求和響應之間的通信狀態進行保存.這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把 HTTP 協議設計成如此簡單的。 HTTP/1.1 雖然是無狀態協議,但為了實現期望的保持狀態功能,于是引入了 Cookie 技術。有了 Cookie 再用 HTTP 協議通信,就可以管理狀態了。 ## 請求 URI 定位資源 HTTP 協議使用 URI 定位互聯網上的資源。正是因為 URI 的特定功能,在互聯網上任意位置的資源都能訪問到 ## 告知服務器意圖的 HTTP 方法 **方法名區分大小寫,注意要用大寫字母。 ** GET :獲取資源 GET 方法用來請求訪問已被 URI 識別的資源,restful 中可用來查詢 POST:傳輸實體主體 雖然用 GET 方法也可以傳輸實體的主體,但一般不用 GET 方法進行傳輸,而是用 POST 方法,restful 中可用來新增 PUT:傳輸文件 PUT 方法用來傳輸文件。就像 FTP 協議的文件上傳一樣,要求在請求報文的主體中包含文件內容,然后保存到請求 URI 指定的位置,鑒于 HTTP/1.1 的 PUT 方法自身不帶驗證機制,任何人都可以上傳文件 , 存在安全性問題因此一般的不使用該方法。restful 中可用來更新一個資源。或新增一個含 id 資源(如果 id 不存在) DELETE:刪除文件 刪除一個資源 HEAD:獲得報文首部 OPTIONS:詢問支持的方法 TRACE:追蹤路徑 ## 持久連接節省通信量 HTTP 協議的初始版本中,每進行一次 HTTP 通信就要斷開一次 TCP連接。 ![](/assets/%23N756KC6KD6N9F0.png) 容量很小的文本傳輸,這樣做也沒有多大問題,但使用瀏覽器瀏覽一個包含多張圖片的 HTML頁面時,在發送請求訪問 HTML頁面資源的同時,也會請求該 HTML頁面里包含的其他資源。因此,每次的請求都會造成無謂的 TCP 連接建立和斷開,增加通信量的開銷。 ## 使用 Cookie 的狀態管理 Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息,通知客戶端保存 Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入 Cookie 值后發送出去。 服務器端發現客戶端發送過來的 Cookie 后,會去檢查究竟是從哪一個客戶端發來的連接請求,然后對比服務器上的記錄,最后得到之前的狀態信息。 # http狀態碼 狀態碼告知從服務器端返回的請求結果 ![](https://img.kancloud.cn/01/ed/01edbc5e862412e6c9e3f65e32a118e6_800x427.png) ## 狀態碼的類別 ||類別|原因| |---|---|---| |1XX|Informational(信息性狀態碼)|接收的請求正在處理| |2XX|Success(成功狀態碼)|請求正常處理完畢| |3XX|Redirection(重定向狀態碼)|需要進行附加操作以完成請求| |4XX|Client Error(客戶端錯誤狀態碼)|服務器無法處理請求| |5XX|Server Error(服務器錯誤狀態碼)|服務器處理請求出錯| ## 常用狀態碼 ### 2XX 成功 2XX 的響應結果表明請求被正常處理了。 #### 200 OK 表示從客戶端發來的請求在服務器端被正常處理了。 #### 204 No Content 該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體 #### 206 Partial Content 該狀態碼表示客戶端進行了范圍請求,而服務器成功執行了這部分的 GET 請求。響應報文中包含由 Content-Range 指定范圍的實體內容。 ### 3XX 重定向 3XX 響應結果表明瀏覽器需要執行某些特殊的處理以正確處理請求。 #### 301 Moved Permanently 永久性重定向。該狀態碼表示請求的資源已被分配了新的 URI,以后應使用資源現在所指的 URI #### 302 Found 臨時性重定向。該狀態碼表示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問。 #### 303 See Other 該狀態碼表示由于請求對應的資源存在著另一個 URI,應使用 GET方法定向獲取請求的資源。 #### 304 Not Modified 未改動 無需再次傳輸請求的內容,也就是說可以使用緩存的內容 ### 4XX 客戶端錯誤 4XX 的響應結果表明客戶端是發生錯誤的原因所在。 #### 400 Bad Request 該狀態碼表示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容后再次發送請求 #### 401 Unauthorized 該狀態碼表示發送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證信息。另外若之前已進行過 1 次請求,則表示用戶認證失敗。 #### 403 Forbidden 該狀態碼表明對請求資源的訪問被服務器拒絕了 #### 404 Not Found 該狀態碼表明服務器上無法找到請求的資源 ### 5XX 服務器錯誤 5XX 的響應結果表明服務器本身發生錯誤。 #### 500 Internal Server Error 該狀態碼表明服務器端在執行請求時發生了錯誤。也有可能是 Web應用存在的 bug 或某些臨時的故障。 #### 503 Service Unavailable 該狀態碼表明服務器暫時處于超負載或正在進行停機維護,現在無法處理請求。 #### 504 Gateway Timeout 超時 是一種HTTP協議的服務器端錯誤狀態代碼,表示扮演網關或者代理的服務器無法在規定的時間內獲得想要的響應。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看