Http主要的請(qǐng)求方式和相應(yīng)格式

Http的狀態(tài)碼:

狀態(tài)代碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類(lèi)別,共分五種類(lèi)別:

  • 1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理
  • 2xx:成功--表示請(qǐng)求已被成功接收、理解、接受
  • 3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
  • 4xx:客戶端錯(cuò)誤--請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)
  • 5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

常見(jiàn)狀態(tài)碼:

  • 200 OK //客戶端請(qǐng)求成功
  • 202 Accepted //已接受。已經(jīng)接受請(qǐng)求,但未處理完成
  • 305 Use Proxy//使用代理。所請(qǐng)求的資源必須通過(guò)代理訪問(wèn)
  • 400 Bad Request //客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被
    服務(wù)器所理解
  • 401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
  • 403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
  • 404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL
  • 500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
  • 503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
  • 505 HTTP Version not supported //服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無(wú)法完成處理

HTTP請(qǐng)求方法

HTTP 1.0定義了三種請(qǐng)求方法:GET,POST,和HEAD方法。
HTTP 1.1新增了五種請(qǐng)求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法;

序號(hào) 方法 描述
1 GET 請(qǐng)求指定的頁(yè)面信息,并返回實(shí)體主體。
2 HEAD 類(lèi)似于get請(qǐng)求,只不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭
3 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。
4 PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。
5 DELETE 請(qǐng)求服務(wù)器刪除指定的頁(yè)面。
6 CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
7 OPTIONS 允許客戶端查看服務(wù)器的性能。
8 TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。

HTTP響應(yīng)頭信息

應(yīng)答頭 說(shuō)明
Allow 服務(wù)器支持哪些請(qǐng)求方法(如GET、POST等)。
Content-Encoding 文檔的編碼(Encode)方法。只有在解碼之后才可以得到Content-Type頭指定的內(nèi)容類(lèi)型。利用gzip壓縮文檔能夠顯著地減少HTML文檔的下載時(shí)間。Java的GZIPOutputStream可以很方便地進(jìn)行g(shù)zip壓縮,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet應(yīng)該通過(guò)查看Accept-Encoding頭(即request.getHeader("Accept-Encoding"))檢查瀏覽器是否支持gzip,為支持gzip的瀏覽器返回經(jīng)gzip壓縮的HTML頁(yè)面,為其他瀏覽器返回普通頁(yè)面。
Content-Length 表示內(nèi)容長(zhǎng)度。只有當(dāng)瀏覽器使用持久HTTP連接時(shí)才需要這個(gè)數(shù)據(jù)。如果你想要利用持久連接的優(yōu)勢(shì),可以把輸出文檔寫(xiě)入 ByteArrayOutputStream,完成后查看其大小,然后把該值放入Content-Length頭,最后通過(guò)byteArrayStream.writeTo(response.getOutputStream()發(fā)送內(nèi)容。
Content-Type 表示后面的文檔屬于什么MIME類(lèi)型。Servlet默認(rèn)為text/plain,但通常需要顯式地指定為text/html。由于經(jīng)常要設(shè)置Content-Type,因此HttpServletResponse提供了一個(gè)專用的方法setContentType。
Date 當(dāng)前的GMT時(shí)間。你可以用setDateHeader來(lái)設(shè)置這個(gè)頭以避免轉(zhuǎn)換時(shí)間格式的麻煩。
Expires 應(yīng)該在什么時(shí)候認(rèn)為文檔已經(jīng)過(guò)期,從而不再緩存它?
Last-Modified 文檔的最后改動(dòng)時(shí)間??蛻艨梢酝ㄟ^(guò)If-Modified-Since請(qǐng)求頭提供一個(gè)日期,該請(qǐng)求將被視為一個(gè)條件GET,只有改動(dòng)時(shí)間遲于指定時(shí)間的文檔才會(huì)返回,否則返回一個(gè)304(Not Modified)狀態(tài)。Last-Modified也可用setDateHeader方法來(lái)設(shè)置。
Location 表示客戶應(yīng)當(dāng)?shù)侥睦锶ヌ崛∥臋n。Location通常不是直接設(shè)置的,而是通過(guò)HttpServletResponse的sendRedirect方法,該方法同時(shí)設(shè)置狀態(tài)代碼為302。
Refresh 表示瀏覽器應(yīng)該在多少時(shí)間之后刷新文檔,以秒計(jì)。除了刷新當(dāng)前文檔之外,你還可以通過(guò)setHeader("Refresh", "5; URL=http://host/path")讓瀏覽器讀取指定的頁(yè)面。注意這種功能通常是通過(guò)設(shè)置HTML頁(yè)面HEAD區(qū)的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">實(shí)現(xiàn),這是因?yàn)?,自?dòng)刷新或重定向?qū)τ谀切┎荒苁褂肅GI或Servlet的HTML編寫(xiě)者十分重要。但是,對(duì)于Servlet來(lái)說(shuō),直接設(shè)置Refresh頭更加方便。注意Refresh的意義是"N秒之后刷新本頁(yè)面或訪問(wèn)指定頁(yè)面",而不是"每隔N秒刷新本頁(yè)面或訪問(wèn)指定頁(yè)面"。因此,連續(xù)刷新要求每次都發(fā)送一個(gè)Refresh頭,而發(fā)送204狀態(tài)代碼則可以阻止瀏覽器繼續(xù)刷新,不管是使用Refresh頭還是<META HTTP-EQUIV="Refresh" ...>。 注意Refresh頭不屬于HTTP 1.1正式規(guī)范的一部分,而是一個(gè)擴(kuò)展,但Netscape和IE都支持它。
Server 服務(wù)器名字。Servlet一般不設(shè)置這個(gè)值,而是由Web服務(wù)器自己設(shè)置。
Set-Cookie 設(shè)置和頁(yè)面關(guān)聯(lián)的Cookie。Servlet不應(yīng)使用response.setHeader("Set-Cookie", ...),而是應(yīng)使用HttpServletResponse提供的專用方法addCookie。
WWW-Authenticate 客戶應(yīng)該在Authorization頭中提供什么類(lèi)型的授權(quán)信息?在包含401(Unauthorized)狀態(tài)行的應(yīng)答中這個(gè)頭是必需的。例如,response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"")。注意Servlet一般不進(jìn)行這方面的處理,而是讓W(xué)eb服務(wù)器的專門(mén)機(jī)制來(lái)控制受密碼保護(hù)頁(yè)面的訪問(wèn)(例如.htaccess)。

2. 常用的HTTP請(qǐng)求頭

協(xié)議頭 說(shuō)明 示例 狀態(tài)
Accept 可接受的響應(yīng)內(nèi)容類(lèi)型(Content-Types) Accept: text/plain 固定
Accept-Charset 可接受的字符集 Accept-Charset: utf-8 固定
Accept-Encoding 可接受的響應(yīng)內(nèi)容的編碼方式。 Accept-Encoding: gzip, deflate 固定
Accept-Language 可接受的響應(yīng)內(nèi)容語(yǔ)言列表。 Accept-Language: en-US 固定
Accept-Datetime 可接受的按照時(shí)間來(lái)表示的響應(yīng)內(nèi)容版本 Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT 臨時(shí)
Authorization 用于表示HTTP協(xié)議中需要認(rèn)證資源的認(rèn)證信息 Authorization: Basic OSdjJGRpbjpvcGVuIANlc2SdDE== 固定
Cache-Control 用來(lái)指定當(dāng)前的請(qǐng)求/回復(fù)中的,是否使用緩存機(jī)制。 Cache-Control: no-cache 固定
Connection 客戶端(瀏覽器)想要優(yōu)先使用的連接類(lèi)型 Connection: keep-alive Connection: Upgrade 固定
Cookie 由之前服務(wù)器通過(guò)Set-Cookie(見(jiàn)下文)設(shè)置的一個(gè)HTTP協(xié)議Cookie Cookie: $Version=1; Skin=new; 固定:標(biāo)準(zhǔn)
Content-Length 以8進(jìn)制表示的請(qǐng)求體的長(zhǎng)度 Content-Length: 348 固定
Content-MD5 請(qǐng)求體的內(nèi)容的二進(jìn)制 MD5 散列值(數(shù)字簽名),以 Base64 編碼的結(jié)果 Content-MD5: oD8dH2sgSW50ZWdyaIEd9D== 廢棄
Content-Type 請(qǐng)求體的MIME類(lèi)型 (用于POST和PUT請(qǐng)求中) Content-Type: application/x-www-form-urlencoded 固定
Date 發(fā)送該消息的日期和時(shí)間(以RFC 7231中定義的"HTTP日期"格式來(lái)發(fā)送) Date: Dec, 26 Dec 2015 17:30:00 GMT 固定
Expect 表示客戶端要求服務(wù)器做出特定的行為 Expect: 100-continue 固定
From 發(fā)起此請(qǐng)求的用戶的郵件地址 From: user@itbilu.com 固定
Host 表示服務(wù)器的域名以及服務(wù)器所監(jiān)聽(tīng)的端口號(hào)。如果所請(qǐng)求的端口是對(duì)應(yīng)的服務(wù)的標(biāo)準(zhǔn)端口(80),則端口號(hào)可以省略 Host: www.itbilu.com:80Host: www.itbilu.com 固定
If-Match 僅當(dāng)客戶端提供的實(shí)體與服務(wù)器上對(duì)應(yīng)的實(shí)體相匹配時(shí),才進(jìn)行對(duì)應(yīng)的操作。主要用于像 PUT 這樣的方法中,僅當(dāng)從用戶上次更新某個(gè)資源后,該資源未被修改的情況下,才更新該資源。 If-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Modified-Since 允許在對(duì)應(yīng)的資源未被修改的情況下返回304未修改 If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT 固定
If-None-Match 允許在對(duì)應(yīng)的內(nèi)容未被修改的情況下返回304未修改( 304 Not Modified ),參考 超文本傳輸協(xié)議 的實(shí)體標(biāo)記If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Range 如果該實(shí)體未被修改過(guò),則向返回所缺少的那一個(gè)或多個(gè)部分。否則,返回整個(gè)新的實(shí)體 If-Range:"9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Unmodified-Since 僅當(dāng)該實(shí)體自某個(gè)特定時(shí)間以來(lái)未被修改的情況下,才發(fā)送回應(yīng)。 If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT 固定
Max-Forwards 限制該消息可被代理及網(wǎng)關(guān)轉(zhuǎn)發(fā)的次數(shù)。 Max-Forwards: 10 固定
Origin 發(fā)起一個(gè)針對(duì)跨域資源共享的請(qǐng)求(該請(qǐng)求要求服務(wù)器在響應(yīng)中加入一個(gè)Access-Control-Allow-Origin
的消息頭,表示訪問(wèn)控制所允許的來(lái)源)。 Origin: http://www.itbilu.com 固定: 標(biāo)準(zhǔn)
Pragma 與具體的實(shí)現(xiàn)相關(guān),這些字段可能在請(qǐng)求/回應(yīng)鏈中的任何時(shí)候產(chǎn)生。 Pragma: no-cache 固定
Proxy-Authorization 用于向代理進(jìn)行認(rèn)證的認(rèn)證信息。 Proxy-Authorization: Basic IOoDZRgDOi0vcGVuIHNlNidJi2== 固定
Range 表示請(qǐng)求某個(gè)實(shí)體的一部分,字節(jié)偏移以0開(kāi)始。 Range: bytes=500-999 固定
Referer 表示瀏覽器所訪問(wèn)的前一個(gè)頁(yè)面,可以認(rèn)為是之前訪問(wèn)頁(yè)面的鏈接將瀏覽器帶到了當(dāng)前頁(yè)面。Referer其實(shí)是Referrer這個(gè)單詞,但RFC制作標(biāo)準(zhǔn)時(shí)給拼錯(cuò)了,后來(lái)也就將錯(cuò)就錯(cuò)使用Referer了。 Referer: http://itbilu.com/nodejs 固定
TE 瀏覽器預(yù)期接受的傳輸時(shí)的編碼方式:可使用回應(yīng)協(xié)議頭Transfer-Encoding中的值(還可以使用"trailers"表示數(shù)據(jù)傳輸時(shí)的分塊方式)用來(lái)表示瀏覽器希望在最后一個(gè)大小為0的塊之后還接收到一些額外的字段。 TE: trailers,deflate 固定
User-Agent 瀏覽器的身份標(biāo)識(shí)字符串 User-Agent: Mozilla/…… 固定
Upgrade 要求服務(wù)器升級(jí)到一個(gè)高版本協(xié)議。 Upgrade:HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 固定
Via 告訴服務(wù)器,這個(gè)請(qǐng)求是由哪些代理發(fā)出的。 Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1) 固定
Warning 一個(gè)一般性的警告,表示在實(shí)體內(nèi)容體中可能存在錯(cuò)誤。 Warning: 199 Miscellaneous warning 固定
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評(píng)論 19 139
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 21,546評(píng)論 24 176
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,600評(píng)論 0 20
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,738評(píng)論 6 152
  • 作者:陳文學(xué) 視野的盡頭就是他要去的地方,那地方掩映在一片綠色之中,飄浮在綠色之上的炊煙,極柔,極白。炊煙里很快幻...
    呼和烏拉閱讀 313評(píng)論 0 0

友情鏈接更多精彩內(nèi)容