Java核心面試寶典】Day18、GET和POST請求都有哪些常見面試題?

      網友投稿 805 2022-05-29

      Hello,你好呀,我是灰小猿!一個超會寫bug的程序猿!

      用堅持締造技術、用指尖敲動未來!

      和很多小伙伴們一樣,我也是一名奔波在Java道路上的“創造者”。也想靠技術來改未來,改變世界!因為我們堅信每一次敲動鍵盤都能讓生活變得更智能、世界變得更有趣!

      在此專欄《Java核心面試寶典》記錄我們備戰夢想的【day 18】!

      今天來和小伙伴們分享一下關于HTTP中常見的幾種方法以及他們可能被出到的面試題。

      一、HTTP頭部主要包含哪些信息?

      HTTP頭部本質上作為一個傳遞額外重要信息的鍵值對,主要分為:通用頭部、請求頭部、響應頭部和實體頭部。

      下面是這四種頭部信息中主要包括的內容:

      通用頭部包括有:

      協議頭

      說明

      舉例

      Cache-Control

      用來指定當前的請求/回復中是否使用緩存機制

      Cache-Control: no-store

      Connection

      客戶端(瀏覽器)想要優先使用的連接類型

      Connection: keep-alive (Upgrade)

      Date

      報文創建時間

      Date: Dec, 26 Dec 2015 17: 30: 00 GMT

      Trailer

      會實現說明在報文主體后記錄哪些首部字段,該首部字段可以使用在 HTTP/1.1 版本分塊傳輸編碼時

      Trailer: Expiress

      Transfer-Encoding

      用來改變報文格式

      Transfer-Encoding: chunked

      Upgrade

      要求服務器升級到一個高版本協議

      Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

      Via

      告訴服務器,這個請求是由哪些代理發出的

      Via: 1.0 fred, 1.1 itbilu.com.com?(Apache/1.1)

      Warning

      一個一般性的警告,表示在實體內容中可能存在錯誤

      Warning: 199 Miscellaneous warning

      請求頭部包括有:

      協議頭

      說明

      舉例

      Accept

      告訴服務器自己允許哪些媒體類型

      Accept: text/plain

      Accept-Charset

      瀏覽器申明可接受的字符集

      Accept-Charset: utf-8

      Accept-Encoding

      瀏覽器申明自己接收的編碼方法

      Accept-Encoding: gzip, deflate

      Accept-Language

      瀏覽器可接受的響應內容語言列表

      Accept-Language: en-US

      Authorization

      用于表示 HTTP 協議中需要認證資源的認證信息

      Authorization: Basic OSdjJGRpbjpvcGVul ANIc2SdDE==

      Expect

      表示客戶端要求服務器做出特定的行為

      Expect: 100-continue

      From

      發起此請求的用戶的郵件地址

      From: user@itbilu.com

      Host

      表示服務器的域名以及服務器所監聽的端口號

      Host: www.itbilu.com:80

      If-XXX

      條件請求

      If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT

      Max-Forwards

      限制該消息可被代理及網關轉發的次數

      Max-Forwards: 10

      Range

      表示請求某個實體的一部分,字節偏移以 0 開始

      Range: bytes=500-999

      Referer

      表示瀏覽器所訪問的前一個頁面,可以認為是之前訪問頁面的鏈接將瀏覽器帶到了當前頁面

      Referer: http://itbilu.com/nodejs

      User-Agent

      瀏覽器的身份標識字符串

      User-Agent: Mozilla/……

      響應頭部包括有:

      協議頭

      說明

      舉例

      Accept-Ranges

      字段的值表示可用于定義范圍的單位

      Accept-Ranges: bytes

      Age

      創建響應的時間

      Age:5744337

      ETag

      唯一標識分配的資源

      Etag:W/"585cd998-7c0f"

      Location

      表示重定向后的 URL

      Location: http://www.zcmhi.com/archives/94.html

      Retry-After

      告知客戶端多久后再發送請求

      Retry-After: 120

      Server

      告知客戶端服務器信息

      Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

      Vary

      緩存控制

      Vary: Origin

      實體頭部包括有:

      協議頭

      說明

      舉例

      Allow

      對某網絡資源的有效的請求行為,不允許則返回405

      Allow: GET, HEAD

      Content-encoding

      返回內容的編碼方式

      Content-Encoding: gzip

      Content-Length

      返回內容的字節長度

      Content-Length: 348

      Content-Language

      響應體的語言

      Content-Language: en,zh

      Content-Location

      請求資源可替代的備用的另一地址

      Content-Location: /index.htm

      Content-MD5

      返回資源的MD5校驗值

      Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

      Content-Range

      在整個返回體中本部分的字節位置

      Content-Range: bytes 21010-47021/47022

      Content-Type

      返回內容的MIME類型

      Content-Type: text/html; charset=utf-8

      Expires

      響應過期的日期和時間

      Expires: Thu, 01 Dec 2010 16:00:00 GMT

      Last-Modified

      請求資源的最后修改時間

      Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT

      二、如何知道HTTP的報文長度?

      當相應消息中存在content-length的時候,我們可以直接根據這個值來判斷數據是否接收完成,例如客戶端向服務器請求一個靜態頁面或者一張圖片的時候,服務器能夠很清楚的知道請求內容的大小,因此可以通過消息首部字段content-length來告訴客戶端需要接收多少的數據。但是如果服務器預先不知道請求內容的大小,例如加載動態頁面的時候,就需要使用Transfer-Encoding: chunked 的方式來代替 Content-Length。

      分塊傳輸編碼(Chunked transfer encoding)是 HTTP/1.1 中引入的一種數據傳輸機制,其允許 HTTP 由服務器發送給客戶端的數據可以分成多個部分,當數據分解成一系列數據塊發送時,服務器就可以發送數據而不需要預先知道發送內容的總大小,每一個分塊包含十六進制的長度值和數據,最后一個分塊長度值為0,表示實體結束,客戶機可以以此為標志確認數據已經接收完畢。

      三、HTTP方法了解哪些?

      HTTP/1.0定義了三種請求方法:GET、POST和HEAD方法

      HTTP/1.1增加了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法

      所以現在一共有九種HTTP方法,他們的作用分別如下:

      方法

      描述

      GET

      請求指定的頁面信息,并返回具體內容,通常只用于讀取數據。

      HEAD

      類似于 GET 請求,只不過返回的響應中沒有具體的內容,用于獲取報頭。

      POST

      向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立或已有資源的更改。

      PUT

      替換指定的資源,沒有的話就新增。

      DELETE

      請求服務器刪除 URL 標識的資源數據。

      CONNECT

      將服務器作為代理,讓服務器代替用戶進行訪問。

      OPTIONS

      向服務器發送該方法,會返回對指定資源所支持的 HTTP 請求方法。

      TRACE

      回顯服務器收到的請求數據,即服務器返回自己收到的數據,主要用于測試和診斷。

      PATCH

      是對 PUT 方法的補充,用來對已知資源進行局部更新。

      四、GET請求和POST請求的區別?

      Get提交的數據會被放置在URL之后,并且請求參數會被完整的保留在瀏覽器的記錄里,由于參數直接暴露在URL中,可能存在安全問題,因此往往用于獲取資源信息。而post參數放置在請求主體中,并且參數不會被保留。因此相比于get方法,post方法更安全,主要用于修改服務器上的資源。

      Get請求只支持URL編碼,post請求支持多種編碼格式。

      Get請求只支持ASCII字符格式的參數,而post請求沒有限制。

      Get請求提交的數據大小有限制(這里所說的限制是針對瀏覽器而言的)。而post提交的數據沒有限制。

      【Java核心面試寶典】Day18、GET和POST請求都有哪些常見面試題?

      Get方式需要使用Request QueryString來獲取變量的值,而post方式通過Request Form來獲取

      Get方法產生一個tcp數據包,post方法產生兩個(并不是所有的瀏覽器中都產生兩個)

      對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務端響應200,請求成功。

      對于POST方式的請求,瀏覽器會先發送http header給服務端,告訴服務端等一下會有數據過來,服務端響應100 continue,告訴瀏覽器我已經準備接收數據,瀏覽器再post發送一個data給服務端,服務端響應200,請求成功。

      五、追問:既然GET請求提交的數據大小有限制,那么他的長度限制是多少?

      HTTP 中的 GET 方法是通過 URL 傳遞數據的,而 URL 本身并沒有對數據的長度進行限制,真正限制 GET 長度的是瀏覽器,

      例如 IE 瀏覽器對 URL 的最大限制為 2000多個字符,大概 2KB左右,像 Chrome, FireFox 等瀏覽器能支持的 URL 字符數更多,其中 FireFox 中 URL 最大長度限制為 65536 個字符,Chrome 瀏覽器中 URL 最大長度限制為 8182 個字符。

      并且這個長度不是只針對數據部分,而是針對整個 URL 而言,在這之中,不同的服務器同樣影響 URL 的最大長度限制。因此對于特定的瀏覽器,GET的長度限制不同。

      由于 POST 方法請求參數在請求主體中,理論上講,post 方法是沒有大小限制的,而真正起限制作用的是服務器處理程序的處理能力。

      今日總結

      今天最主要其實是HTTP協議中的多種方法的使用和理解,我們需要掌握get和post請求的原理、他們的區別、各自的請求方式、適用于什么場景等等。

      如果小伙伴們有遇到其他相關的面試題,歡迎在評論區留言提出,我會把大家提出的總結到文章內, 歡迎小伙伴們一起評論區打卡學習!小伙伴們可也在左方加我好友一起探討學習!

      我是 灰小猿 ,我們下期見!

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:新技術帶來新機遇,華為云攜手英特爾共赴云原生2.0時代
      下一篇:利用華為云ECS開啟快速建站|【我的華為云體驗之旅】
      相關文章
      亚洲精品自偷自拍无码| 亚洲精品伦理熟女国产一区二区| 精品久久久久亚洲| 亚洲色偷偷偷综合网| 国产精品亚洲专区在线观看| 亚洲国产日韩在线成人蜜芽 | 亚洲精品美女久久久久9999| 久久亚洲国产视频| 亚洲大尺度无码专区尤物| 亚洲AV无码久久精品成人| 亚洲AV中文无码字幕色三| 亚洲AV无码久久精品成人| 久久久亚洲精品无码| 久久亚洲春色中文字幕久久久| 亚洲人成在线影院| 亚洲精品国产成人| 亚洲精品第一国产综合野| 亚洲人成在久久综合网站| 久久国产亚洲精品| 亚洲AV无码专区在线观看成人| 亚洲av永久无码天堂网| 亚洲av无码国产精品色在线看不卡| 免费观看亚洲人成网站| 中文字幕专区在线亚洲| 亚洲成AV人片在线观看WWW| 亚洲网站在线观看| 亚洲制服丝袜一区二区三区| 亚洲人成人网毛片在线播放| 亚洲国产成人综合精品| 亚洲高清免费视频| 亚洲色大成网站www永久一区| 亚洲av日韩综合一区在线观看| 久久久久亚洲精品日久生情| 亚洲国产成人九九综合| 亚洲欧美中文日韩视频| 亚洲国产精品日韩| 国产亚洲精品a在线观看app| 亚洲美女自拍视频| 亚洲性色AV日韩在线观看| 亚洲另类少妇17p| 亚洲va久久久噜噜噜久久天堂|