1. 程式人生 > >HTTP請求主要分為Get和Post兩種方法

HTTP請求主要分為Get和Post兩種方法

HTTP請求主要分為GetPost兩種方法

  • GET是從伺服器上獲取資料,POST是向伺服器傳送資料
  • GET請求引數顯示,都顯示在瀏覽器網址上,HTTP伺服器根據該請求所包含URL中的引數來產生響應內容,即“Get”請求的引數是URL的一部分。 例如:
    http://www.baidu.com/s?wd=Chinese
  • POST請求引數在請求體當中,訊息長度沒有限制而且以隱式的方式進行傳送,通常用來向HTTP伺服器提交量比較大的資料(比如請求中包含許多引數或者檔案上傳操作等),請求的引數包含在“Content-Type”訊息頭裡,指明該訊息體的媒體型別和編碼

注意:避免使用Get方式提交表單,因為有可能會導致安全問題。 比如說在登陸表單中用Get方式,使用者輸入的使用者名稱和密碼將在位址列中暴露無遺。

常用的請求報頭

1. Host (主機和埠號)

Host:對應網址URL中的Web名稱和埠號,用於指定被請求資源的Internet主機和埠號,通常屬於URL的一部分。

2. Connection (連結型別)

Connection:表示客戶端與服務連線型別

  1. Client 發起一個包含 Connection:keep-alive 的請求,HTTP/1.1使用 keep-alive 為預設值。
  2. Server收到請求後:
  • 如果 Server 支援 keep-alive,回覆一個包含 Connection:keep-alive 的響應,不關閉連線;
  • 如果 Server 不支援 keep-alive,回覆一個包含 Connection:close 的響應,關閉連線。
  1. 如果client收到包含 Connection:keep-alive 的響應,向同一個連線傳送下一個請求,直到一方主動關閉連線。

keep-alive在很多情況下能夠重用連線,減少資源消耗,縮短響應時間,比如當瀏覽器需要多個檔案時(比如一個HTML檔案和相關的圖形檔案),不需要每次都去請求建立連線。

3. Upgrade-Insecure-Requests (升級為HTTPS請求)

Upgrade-Insecure-Requests:升級不安全的請求,意思是會在載入 http 資源時自動替換成 https 請求,讓瀏覽器不再顯示https頁面中的http請求警報。

HTTPS 是以安全為目標的 HTTP 通道,所以在 HTTPS 承載的頁面上不允許出現 HTTP 請求,一旦出現就是提示或報錯。

4. User-Agent (瀏覽器名稱)

User-Agent:是客戶瀏覽器的名稱,以後會詳細講。

5. Accept (傳輸檔案型別)

Accept:指瀏覽器或其他客戶端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途網際網路郵件擴充套件))檔案型別,伺服器可以根據它判斷並返回適當的檔案格式。

舉例:

Accept: */*:表示什麼都可以接收。

Accept:image/gif:表明客戶端希望接受GIF影象格式的資源;

Accept:text/html:表明客戶端希望接受html文字。

Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示瀏覽器支援的 MIME 型別分別是 html文字、xhtml和xml文件、所有的影象格式資源。

q是權重係數,範圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其“;”之前的型別表示的內容。若沒有指定q值,則預設為1,按從左到右排序順序;若被賦值為0,則用於表示瀏覽器不接受此內容型別。

Text:用於標準化地表示的文字資訊,文字訊息可以是多種字符集和或者多種格式的;Application:用於傳輸應用程式資料或者二進位制資料。詳細請點選

6. Referer (頁面跳轉處)

Referer:表明產生請求的網頁來自於哪個URL,使用者是從該 Referer頁面訪問到當前請求的頁面。這個屬性可以用來跟蹤Web請求來自哪個頁面,是從什麼網站來的等。

有時候遇到下載某網站圖片,需要對應的referer,否則無法下載圖片,那是因為人家做了防盜鏈,原理就是根據referer去判斷是否是本網站的地址,如果不是,則拒絕,如果是,就可以下載;

7. Accept-Encoding(檔案編解碼格式)

Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於檔案格式,它是為了壓縮檔案並加速檔案傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查檔案格式,許多情形下這可以減少大量的下載時間。

舉例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0

如果有多個Encoding同時匹配, 按照q值順序排列,本例中按順序支援 gzip, identity壓縮編碼,支援gzip的瀏覽器會返回經過gzip編碼的HTML頁面。 如果請求訊息中沒有設定這個域伺服器假定客戶端對各種內容編碼都可以接受。

8. Accept-Language(語言種類)

Accept-Langeuage:指出瀏覽器可以接受的語言種類,如en或en-us指英語,zh或者zh-cn指中文,當伺服器能夠提供一種以上的語言版本時要用到。

9. Accept-Charset(字元編碼)

Accept-Charset:指出瀏覽器可以接受的字元編碼。

舉例:Accept-Charset:iso-8859-1,gb2312,utf-8

  • ISO8859-1:通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字元,英文瀏覽器的預設值是ISO-8859-1.
  • gb2312:標準簡體中文字符集;
  • utf-8:UNICODE 的一種變長字元編碼,可以解決多種語言文字顯示問題,從而實現應用國際化和本地化。

如果在請求訊息中沒有設定這個域,預設是任何字符集都可以接受。

Cookie:瀏覽器用這個屬性向伺服器傳送Cookie。Cookie是在瀏覽器中寄存的小型資料體,它可以記載和伺服器相關的使用者資訊,也可以用來實現會話功能,以後會詳細講。

11. Content-Type (POST資料型別)

Content-Type:POST請求裡用來表示的內容型別。

舉例:Content-Type = Text/XML; charset=gb2312:

指明該請求的訊息體中包含的是純文字的XML型別的資料,字元編碼採用“gb2312”。