日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Http请求头和响应头(Get和Post)

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Http请求头和响应头(Get和Post) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、HTTP簡介
  • 二、HTTP消息結構 [請求報文]
    • (一)請求行
      • (1)請求方法
      • (2)請求頭
      • (3)空行
      • (4)請求數據(post)
      • 實例 (post)
  • 三、HTTP響應消息
    • (一)狀態行
      • (1)HTTP狀態碼
    • (二)HTTP響應頭 content-Type
      • (1)定義和用法
      • application/x-www-form-urlencoded
  • 四、關于HTTP請求GET和POST的區別
    • 1.數據位置
    • 2.傳輸數據的大小
    • 3.安全性

參考: Http請求

一、HTTP簡介

HTTP協議是 超文本傳輸協議 的縮寫,是用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議

HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)

二、HTTP消息結構 [請求報文]

一個HTTP請求報文由請求行(request line)、請求頭(header)、空行和請求數據4個部分組成,下圖給出了請求報文的一般格式。

(一)請求行

請求行由請求方法字段、URL字段和HTTP協議版本字段3個字段組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。

(1)請求方法

(1)GET方法要求服務器將URL定位的資源放在響應報文的數據部分,回送給客戶端。
使用GET方法時,請求參數和對應的值附加在URL后面,利用一個問號(“?”)代表URL的結尾與請求參數的開始,傳遞參數長度受限制。
例如,/index.jsp?id=100&op=bind,這樣通過GET方式傳遞的數據直接表示在地址中,所以我們可以把請求結果以鏈接的形式發送給好友
顯然,這種方式不適合傳送私密數據。另外,由于不同的瀏覽器對地址的字符限制也有所不同,一般最多只能識別1024個字符,所以如果需要傳送大量數據的時候,也不適合使用GET方式

(2)POST方法將請求參數封裝在HTTP請求數據中,以名稱/值的形式出現,可以傳輸大量數據,這樣POST方式對傳送的數據大小沒有限制,而且也不會顯示在URL中。

(3)HEAD就像GET,只不過服務端接受到HEAD請求后只返回響應頭,而不會發送響應內容。當我們只需要查看某個頁面的狀態的時候,使用HEAD是非常高效的,因為在傳輸的過程中省去了頁面內容

(2)請求頭

請求頭部由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號“:”分隔。
請求頭部通知服務器有關于客戶端請求的信息,典型的請求頭有:

User-Agent:產生請求的瀏覽器類型。
Accept:客戶端可識別的內容類型列表。
Host:請求的主機名,允許多個域名同處一個IP地址,即虛擬主機。

(3)空行

最后一個請求頭之后是一個空行,發送回車符和換行符,通知服務器以下不再有請求頭

(4)請求數據(post)

請求數據不在GET方法中使用,而是在POST方法中使用。

POST方法適用于需要客戶填寫表單的場合。與請求數據相關的最常使用的請求頭是Content-Type和Content-Length

實例 (post)

// 請求首行POST /hello/index.jsp HTTP/1.1//請求頭信息Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Connection: keep-aliveReferer: http://localhost/hello/index.jspCookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98Content-Type: application/x-www-form-urlencoded Content-Length: 14 // 這里是空行//POST有請求正文 (Get沒有,為空)username=hello

三、HTTP響應消息

HTTP響應也由三個部分組成:狀態行、響應頭、空行、響應正文。

(一)狀態行

狀態行通過提供一個狀態碼來說明所請求的資源情況

(1)HTTP狀態碼

狀態代碼由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值

  • 1xx:指示信息–表示請求已接收,繼續處理。
  • 2xx:成功–表示請求已被成功接收、理解、接受。
  • 3xx:重定向–要完成請求必須進行更進一步的操作。
  • 4xx:客戶端錯誤–請求有語法錯誤或請求無法實現。
  • 5xx:服務器端錯誤–服務器未能實現合法的請求

常見狀態碼

  • 200 :客戶端請求成功。
  • 400 :客戶端請求有語法錯誤,不能被服務器所理解。
  • 401 :請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用。
  • 403 :服務器收到請求,但是拒絕提供服務。
  • 404 :請求資源不存在,舉個例子:輸入了錯誤的URL。
  • 500 :服務器發生不可預期的錯誤。
  • 503 :服務器當前不能處理客戶端的請求,一段時間后可能恢復正常,舉個例子:HTTP/1.1 200 OK(CRLF)。

(二)HTTP響應頭 content-Type

HTTP content-Type
Content-Type,內容類型,一般是指網頁中存在的Content-Type,用于定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,這就是經常看到一些Asp網頁點擊的結果卻是下載到的一個文件或一張圖片的原因

(1)定義和用法

enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼

默認地,表單數據會編碼為
application/x-www-form-urlencoded”。就是說,在發送到服務器之前,所有字符都會進行編碼(空格轉換為"+" 加號,特殊符號轉換為 ASCII HEX 值)

HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。
其中 POST一般用來向服務端提交數據,我們討論 POST 提交數據的幾種方式

application/x-www-form-urlencoded

這應該是最常見的 POST 提交數據的方式了。瀏覽器的原生 表單,如果不設置 enctype 屬性,那么最終就會以application/x-www-form-urlencoded 方式提交數據。

Content-Type 被指定為 application/x-www-form-urlencoded;
其次,提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼。
大部分服務端語言都對這種方式有很好的支持

參考了:post請求頭中常見content-type(非常重要)

四、關于HTTP請求GET和POST的區別

1.數據位置

GET提交,請求的數據會附在URL之后(就是把數據放置在HTTP協議頭<request-line>中),以?分割URL和傳輸數據,多個參數用&連接;

例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。

  • 如果數據是英文字母/數字,原樣發送,
  • 如果是空格,轉換為+,
  • 如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:
    %E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。

因此,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變

2.傳輸數據的大小

HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規范也沒有對URL長度進行限制。 而在實際開發中存在的限制主要有:

GET:特定瀏覽器和服務器對URL長度有限制,例如IE對URL長度的限制是2083字節(2K+35)。對于其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決于操作系統的支持。

因此對于GET提交時,傳輸數據就會受到URL長度的限制。

POST:由于不是通過URL傳值,理論上數據不受限。但實際各個WEB服務器會規定對post提交數據大小進行限制,Apache、IIS6都有各自的配置。

3.安全性

POST的安全性要比GET的安全性高。

注意:這里所說的安全性和上面GET提到的“安全”不是同個概念。上面“安全”的含義僅僅是不作數據修改,而這里安全的含義是真正的Security的含義,比如:通過GET提交數據,用戶名和密碼將明文出現在URL上,因為(1)登錄頁面有可能被瀏覽器緩存
(2)其他人查看瀏覽器的歷史紀錄,那么別人就可以拿到你的賬號和密碼了

總結

以上是生活随笔為你收集整理的Http请求头和响应头(Get和Post)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。