網(wǎng)站logo
SEO
網(wǎng)站優(yōu)化
seo369團(tuán)隊(duì),專注SEO、網(wǎng)站優(yōu)化
百度關(guān)鍵詞排名優(yōu)化,先排名后付費(fèi)
引領(lǐng)SEO見效果付費(fèi)新潮流
聯(lián)系電話
您現(xiàn)在的位置: seo優(yōu)化SEO基礎(chǔ)知識(shí) > 名詞解釋 

HTTP協(xié)議狀態(tài)碼詳解

來源:SEO369  2016-02-10  關(guān)鍵字:狀態(tài)
     HTTP狀態(tài)碼(HTTP Status Code)是用以表示網(wǎng)頁(yè)服務(wù)器HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼。它由 RFC 2616 規(guī)范定義的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等規(guī)范擴(kuò)展。

100-199 用于指定客戶端應(yīng)相應(yīng)的某些動(dòng)作。 
200-299 用于表示請(qǐng)求成功。 
300-399 用于已經(jīng)移動(dòng)的文件并且常被包含在定位頭信息中指定新的地址信息。 
400-499 用于指出客戶端的錯(cuò)誤。 
500-599 用于支持服務(wù)器錯(cuò)誤。 

    HttpServletResponse中的常量代表關(guān)聯(lián)不同標(biāo)準(zhǔn)消息的狀態(tài)碼。在servlet程序中,你會(huì)更多地用到這些常量的標(biāo)識(shí)來使用狀態(tài)碼。例如:你一般會(huì)使用response.setStatus(response.SC_NO_CONTENT)而不是 response.setStatus(204),因?yàn)楹笳卟灰桌斫舛胰菀讓?dǎo)致錯(cuò)誤。但是,你應(yīng)當(dāng)注意到服務(wù)器允許對(duì)消息輕微的改變,而客戶端只注意狀態(tài)碼的數(shù)字值。所以服務(wù)器可能只返回 HTTP/1.1 200 而不是 HTTP/1.1 200 OK。 

100 (Continue/繼續(xù))
    如果服務(wù)器收到頭信息中帶有100-continue的請(qǐng)求,這是指客戶端詢問是否可以在后續(xù)的請(qǐng)求中發(fā)送附件。在這種情況下,服務(wù)器用100(SC_CONTINUE)允許客戶端繼續(xù)或用417 (Expectation Failed)告訴客戶端不同意接受附件。這個(gè)狀態(tài)碼是 HTTP 1.1中新加入的。 

101 (Switching Protocols/轉(zhuǎn)換協(xié)議)
    101 (SC_SWITCHING_PROTOCOLS)狀態(tài)碼是指服務(wù)器將按照其上的頭信息變?yōu)橐粋€(gè)不同的協(xié)議。這是 HTTP 1.1中新加入的。 

200 (OK/正常)
    200 (SC_OK)的意思是一切正常。一般用于相應(yīng)GET和POST請(qǐng)求。這個(gè)狀態(tài)碼對(duì)servlet是缺省的;如果沒有調(diào)用setStatus方法的話,就會(huì)得到200。 

201 (Created/已創(chuàng)建)
    201 (SC_CREATED)表示服務(wù)器在請(qǐng)求的響應(yīng)中建立了新文檔;應(yīng)在定位頭信息中給出它的URL。

202 (Accepted/接受)
    202 (SC_ACCEPTED)告訴客戶端請(qǐng)求正在被執(zhí)行,但還沒有處理完。 

203 (Non-Authoritative Information/非官方信息)
    狀態(tài)碼203 (SC_NON_AUTHORITATIVE_INFORMATION)是表示文檔被正常的返回,但是由于正在使用的是文檔副本所以某些響應(yīng)頭信息可能不正確。這是 HTTP 1.1中新加入的。 

204 (No Content/無內(nèi)容)
    在并沒有新文檔的情況下,204 (SC_NO_CONTENT)確保瀏覽器繼續(xù)顯示先前的文檔。這各狀態(tài)碼對(duì)于用戶周期性的重載某一頁(yè)非常有用,并且你可以確定先前的頁(yè)面是否已經(jīng)更新。例如,某個(gè)servlet可能作如下操作: 
int pageVersion =Integer.parseInt(request.getParameter("pageVersion"));
if (pageVersion >;= currentVersion) {
   response.setStatus(response.SC_NO_CONTENT);
} else {
       // Create regular page
}
    但是,這種方法對(duì)通過刷新響應(yīng)頭信息或等價(jià)的HTML標(biāo)記自動(dòng)重載的頁(yè)面起作用,因?yàn)樗鼤?huì)返回一個(gè)204狀態(tài)碼停止以后的重載。但基于JavaScript腳本的自動(dòng)重載在這種情況下仍然需要能夠起作用。可以閱讀本書7.2 ( HTTP 1.1 Response Headers and Their Meaning/HTTP 1.1響應(yīng)頭信息以及他們的意義)部分的詳細(xì)討論。 

205 (Reset Content/重置內(nèi)容)
    重置內(nèi)容205 (SC_RESET_CONTENT)的意思是雖然沒有新文檔但瀏覽器要重置文檔顯示。這個(gè)狀態(tài)碼用于強(qiáng)迫瀏覽器清除表單域。這是 HTTP 1.1中新加入的。 

206 (Partial Content/局部?jī)?nèi)容)
    206 (SC_PARTIAL_CONTENT)是在服務(wù)器完成了一個(gè)包含Range頭信息的局部請(qǐng)求時(shí)被發(fā)送的。這是 HTTP 1.1中新加入的。 

300 (Multiple Choices/多重選擇)
    300 (SC_MULTIPLE_CHOICES)表示被請(qǐng)求的文檔可以在多個(gè)地方找到,并將在返回的文檔中列出來。如果服務(wù)器有首選設(shè)置,首選項(xiàng)將會(huì)被列于定位響應(yīng)頭信息中。 

301 (Moved Permanently)
    301 (SC_MOVED_PERMANENTLY)狀態(tài)是指所請(qǐng)求的文檔在別的地方;文檔新的URL會(huì)在定位響應(yīng)頭信息中給出。瀏覽器會(huì)自動(dòng)連接到新的URL。 

302 (Found/找到)
    與301有些類似,只是定位頭信息中所給的URL應(yīng)被理解為臨時(shí)交換地址而不是永久的。注意:在 HTTP 1.0中,消息是臨時(shí)移動(dòng)(Moved Temporarily)的而不是被找到,因此HttpServletResponse中的常量是SC_MOVED_TEMPORARILY不是我們以為的SC_FOUND。 

注意
    代表狀態(tài)碼302的常量是SC_MOVED_TEMPORARILY而不是SC_FOUND。 

    狀態(tài)碼302是非常有用的因?yàn)闉g覽器自動(dòng)連接在定為響應(yīng)頭信息中給出的新URL。這非常有用,而且為此有一個(gè)專門的方法——sendRedirect。使用response.sendRedirect(url)比調(diào)用       response.setStatus(response.SC_MOVED_TEMPORARILY)和response.setHeader("Location", url)多幾個(gè)好處。首先,response.sendRedirect(url)方法明顯要簡(jiǎn)單和容易。第二,servlet自動(dòng)建立一頁(yè)保存這一連接以提供給那些不能自動(dòng)轉(zhuǎn)向的瀏覽器顯示。最后,在servlet 2.2版本(J2EE中的版本)中,sendRedirect能夠處理相對(duì)路徑,自動(dòng)轉(zhuǎn)換為絕對(duì)路徑。但是你只能在2.1版本中使用絕對(duì)路徑。 

    如果你將用戶轉(zhuǎn)向到站點(diǎn)的另一頁(yè)中,你要用 HttpServletResponse 中的 encodeURL 方法傳送URL。這么做可預(yù)防不斷使用基于URL重寫的會(huì)話跟蹤的情況。URL重寫是一種在你的網(wǎng)站跟蹤不使用 cookies 的用戶的方法。這是通過在每一個(gè)URL尾部附加路徑信息實(shí)現(xiàn)的,但是 servlet 會(huì)話跟蹤API會(huì)自動(dòng)的注意這些細(xì)節(jié)。會(huì)話跟蹤在第九章討論,并且養(yǎng)成使用 encodeURL 的習(xí)慣會(huì)使以后添加會(huì)話跟蹤的功能更容易很多。 

核心技巧
    如果你將用戶轉(zhuǎn)向到你的站點(diǎn)的其他頁(yè)面,用 response.sendRedirect(response.encodeURL(url)) 的方式事先計(jì)劃好會(huì)話跟蹤(session tracking)要比只是調(diào)用 response.sendRedirect(url) 好的多。 

303 (See Other/參見其他信息)
    這個(gè)狀態(tài)碼和 301、302 相似,只是如果最初的請(qǐng)求是 POST,那么新文檔(在定位頭信息中給出)藥用 GET 找回。這個(gè)狀態(tài)碼是新加入 HTTP 1.1中的。 

304 (Not Modified/為修正)
    當(dāng)客戶端有一個(gè)緩存的文檔,通過提供一個(gè) If-Modified-Since 頭信息可指出客戶端只希望文檔在指定日期之后有所修改時(shí)才會(huì)重載此文檔,用這種方式可以進(jìn)行有條件的請(qǐng)求。304 (SC_NOT_MODIFIED)是指緩沖的版本已經(jīng)被更新并且客戶端應(yīng)刷新文檔。另外,服務(wù)器將返回請(qǐng)求的文檔及狀態(tài)碼 200。servlet一般情況下不會(huì)直接設(shè)置這個(gè)狀態(tài)碼。它們會(huì)實(shí)現(xiàn)getLastModified方法并根據(jù)修正日期讓默認(rèn)服務(wù)方法處理有條件的請(qǐng)求。

305 (Use Proxy/使用代理)
    305 (SC_USE_PROXY)表示所請(qǐng)求的文檔要通過定位頭信息中的代理服務(wù)器獲得。這個(gè)狀態(tài)碼是新加入 HTTP 1.1中的。 

307 (Temporary Redirect/臨時(shí)重定向)
    瀏覽器處理307狀態(tài)的規(guī)則與302相同。307狀態(tài)被加入到 HTTP 1.1中是由于許多瀏覽器在收到302響應(yīng)時(shí)即使是原始消息為POST的情況下仍然執(zhí)行了錯(cuò)誤的轉(zhuǎn)向。只有在收到303響應(yīng)時(shí)才假定瀏覽器會(huì)在POST請(qǐng)求時(shí)重定向。添加這個(gè)新的狀態(tài)碼的目的很明確:在響應(yīng)為303時(shí)按照GET和POST請(qǐng)求轉(zhuǎn)向;而在307響應(yīng)時(shí)則按照GET請(qǐng)求轉(zhuǎn)向而不是POST請(qǐng)求。注意:由于某些原因在HttpServletResponse中還沒有與這個(gè)狀態(tài)對(duì)應(yīng)的常量。該狀態(tài)碼是新加入HTTP 1.1中的。 

注意
    在 HttpServletResponse 中沒有 SC_TEMPORARY_REDIRECT 常量,所以你只能顯示的使用307狀態(tài)碼。 

400 (Bad Request/錯(cuò)誤請(qǐng)求)
    400 (SC_BAD_REQUEST)指出客戶端請(qǐng)求中的語(yǔ)法錯(cuò)誤。 

401 (Unauthorized/未授權(quán))
    401 (SC_UNAUTHORIZED)表示客戶端在授權(quán)頭信息中沒有有效的身份信息時(shí)訪問受到密碼保護(hù)的頁(yè)面。這個(gè)響應(yīng)必須包含一個(gè)WWW-Authenticate的授權(quán)信息頭。例如,在本書4.5部分中的“Restricting Access to Web Pages./限制訪問Web頁(yè)。” 

403 (Forbidden/禁止)
    403 (SC_FORBIDDEN)的意思是除非擁有授權(quán)否則服務(wù)器拒絕提供所請(qǐng)求的資源。這個(gè)狀態(tài)經(jīng)常會(huì)由于服務(wù)器上的損壞文件或目錄許可而引起。 

404 (Not Found/未找到)
    404 (SC_NOT_FOUND)狀態(tài)每個(gè)網(wǎng)絡(luò)程序員可能都遇到過,他告訴客戶端所給的地址無法找到任何資源。它是表示“沒有所訪問頁(yè)面”的標(biāo)準(zhǔn)方式。這個(gè)狀態(tài)碼是常用的響應(yīng)并且在HttpServletResponse類中有專門的方法實(shí)現(xiàn)它:sendError("message")。相對(duì)于setStatus使用sendError得好處是:服務(wù)器會(huì)自動(dòng)生成一個(gè)錯(cuò)誤頁(yè)來顯示錯(cuò)誤信息。但是,Internet Explorer 5瀏覽器卻默認(rèn)忽略你發(fā)揮的錯(cuò)誤頁(yè)面并顯示其自定義的錯(cuò)誤提示頁(yè)面,雖然微軟這么做違反了 HTTP 規(guī)范。要關(guān)閉此功能,在工具菜單里,選擇Internet選項(xiàng),進(jìn)入高級(jí)標(biāo)簽頁(yè),并確認(rèn)“顯示友好的 HTTP 錯(cuò)誤信息”選項(xiàng)(在我的瀏覽器中是倒數(shù)第8各選項(xiàng))沒有被選。但是很少有用戶知道此選項(xiàng),因此這個(gè)特性被IE5隱藏了起來使用戶無法看到你所返回給用戶的信息。而其他主流瀏覽器及IE4都完全的顯示服務(wù)器生成的錯(cuò)誤提示頁(yè)面??梢詤⒖紙D6-3及6-4中的例子。 

核心警告
    默認(rèn)情況下,IE5忽略服務(wù)端生成的錯(cuò)誤提示頁(yè)面。 

405 (Method Not Allowed/方法未允許)
    405 (SC_METHOD_NOT_ALLOWED)指出請(qǐng)求方法(GET, POST, HEAD, PUT, DELETE, 等)對(duì)某些特定的資源不允許使用。該狀態(tài)碼是新加入 HTTP 1.1中的。 

406 (Not Acceptable/無法訪問)
    406 (SC_NOT_ACCEPTABLE)表示請(qǐng)求資源的MIME類型與客戶端中Accept頭信息中指定的類型不一致。見本書7.2部分中的表7.1(HTTP 1.1 Response Headers and Their Meaning/HTTP 1.1響應(yīng)頭信息以及他們的意義)中對(duì)MIME類型的介紹。406是新加入 HTTP 1.1中的。 

407 (Proxy Authentication Required/代理服務(wù)器認(rèn)證要求)
    407 (SC_PROXY_AUTHENTICATION_REQUIRED)與401狀態(tài)有些相似,只是這個(gè)狀態(tài)用于代理服務(wù)器。該狀態(tài)指出客戶端必須通過代理服務(wù)器的認(rèn)證。代理服務(wù)器返回一個(gè)Proxy-Authenticate響應(yīng)頭信息給客戶端,這會(huì)引起客戶端使用帶有Proxy-Authorization請(qǐng)求的頭信息重新連接。該狀態(tài)碼是新加入 HTTP 1.1中的。 

408 (Request Timeout/請(qǐng)求超時(shí))
    408 (SC_REQUEST_TIMEOUT)是指服務(wù)端等待客戶端發(fā)送請(qǐng)求的時(shí)間過長(zhǎng)。該狀態(tài)碼是新加入 HTTP 1.1中的。 

409 (Conflict/沖突)
    該狀態(tài)通常與PUT請(qǐng)求一同使用,409 (SC_CONFLICT)狀態(tài)常被用于試圖上傳版本不正確的文件時(shí)。該狀態(tài)碼是新加入 HTTP 1.1中的。 

410 (Gone/已經(jīng)不存在)
    410 (SC_GONE)告訴客戶端所請(qǐng)求的文檔已經(jīng)不存在并且沒有更新的地址。410狀態(tài)不同于404,410是在指導(dǎo)文檔已被移走的情況下使用,而404則用于未知原因的無法訪問。該狀態(tài)碼是新加入 HTTP 1.1中的。 

411 (Length Required/需要數(shù)據(jù)長(zhǎng)度)
    411 (SC_LENGTH_REQUIRED)表示服務(wù)器不能處理請(qǐng)求(假設(shè)為帶有附件的POST請(qǐng)求),除非客戶端發(fā)送Content-Length頭信息指出發(fā)送給服務(wù)器的數(shù)據(jù)的大小。該狀態(tài)是新加入 HTTP 1.1的。 

412 (Precondition Failed/先決條件錯(cuò)誤)
    412 (SC_PRECONDITION_FAILED)狀態(tài)指出請(qǐng)求頭信息中的某些先決條件是錯(cuò)誤的。該狀態(tài)是新加入 HTTP 1.1的。 

413 (Request Entity Too Large/請(qǐng)求實(shí)體過大)
    413 (SC_REQUEST_ENTITY_TOO_LARGE)告訴客戶端現(xiàn)在所請(qǐng)求的文檔比服務(wù)器現(xiàn)在想要處理的要大。如果服務(wù)器認(rèn)為能夠過一段時(shí)間處理,則會(huì)包含一個(gè)Retry-After的響應(yīng)頭信息。該狀態(tài)是新加入 HTTP 1.1的。 

414 (Request URI Too Long/請(qǐng)求URI過長(zhǎng))
    414 (SC_REQUEST_URI_TOO_LONG)狀態(tài)用于在URI過長(zhǎng)的情況時(shí)。這里所指的“URI”是指URL中主機(jī)、域名及端口號(hào)之后的內(nèi)容。例如:在URL--http://www.y2k-disaster.com:8080/we/look/silly/now/中URI是指/we/look/silly/now/。該狀態(tài)是新加入 HTTP 1.1的。 

415 (Unsupported Media Type/不支持的媒體格式)
    415 (SC_UNSUPPORTED_MEDIA_TYPE)意味著請(qǐng)求所帶的附件的格式類型服務(wù)器不知道如何處理。該狀態(tài)是新加入 HTTP 1.1的。 

416 (Requested Range Not Satisfiable/請(qǐng)求范圍無法滿足)
    416表示客戶端包含了一個(gè)服務(wù)器無法滿足的Range頭信息的請(qǐng)求。該狀態(tài)是新加入 HTTP 1.1的。奇怪的是,在servlet 2.1版本API的HttpServletResponse中并沒有相應(yīng)的常量代表該狀態(tài)。 

注意
    在servlet 2.1的規(guī)范中,類HttpServletResponse并沒有SC_REQUESTED_RANGE_NOT_SATISFIABLE 這樣的常量,所以你只能直接使用416。在servlet 2.2版本之后都包含了此常量。 

417 (Expectation Failed/期望失敗)
    如果服務(wù)器得到一個(gè)帶有100-continue值的Expect請(qǐng)求頭信息,這是指客戶端正在詢問是否可以在后面的請(qǐng)求中發(fā)送附件。在這種情況下,服務(wù)器也會(huì)用該狀態(tài)(417)告訴瀏覽器服務(wù)器不接收該附件或用100 (SC_CONTINUE)狀態(tài)告訴客戶端可以繼續(xù)發(fā)送附件。該狀態(tài)是新加入 HTTP 1.1的。 

500 (Internal Server Error/內(nèi)部服務(wù)器錯(cuò)誤)
    500 (SC_INTERNAL_SERVER_ERROR) 是常用的“服務(wù)器錯(cuò)誤”狀態(tài)。該狀態(tài)經(jīng)常由CGI程序引起也可能(但愿不會(huì)如此!)由無法正常運(yùn)行的或返回頭信息格式不正確的servlet引起。 

501 (Not Implemented/未實(shí)現(xiàn))
    501 (SC_NOT_IMPLEMENTED)狀態(tài)告訴客戶端服務(wù)器不支持請(qǐng)求中要求的功能。例如,客戶端執(zhí)行了如PUT這樣的服務(wù)器并不支持的命令。 

502 (Bad Gateway/錯(cuò)誤的網(wǎng)關(guān))
    502 (SC_BAD_GATEWAY)被用于充當(dāng)代理或網(wǎng)關(guān)的服務(wù)器;該狀態(tài)指出接收服務(wù)器接收到遠(yuǎn)端服務(wù)器的錯(cuò)誤響應(yīng)。 

503 (Service Unavailable/服務(wù)無法獲得)
    狀態(tài)碼503 (SC_SERVICE_UNAVAILABLE)表示服務(wù)器由于在維護(hù)或已經(jīng)超載而無法響應(yīng)。例如,如果某些線程或數(shù)據(jù)庫(kù)連接池已經(jīng)沒有空閑則servlet會(huì)返回這個(gè)頭信息。服務(wù)器可提供一個(gè)Retry-After頭信息告訴客戶端什么時(shí)候可以在試一次。 

504 (Gateway Timeout/網(wǎng)關(guān)超時(shí))
    該狀態(tài)也用于充當(dāng)代理或網(wǎng)關(guān)的服務(wù)器;它指出接收服務(wù)器沒有從遠(yuǎn)端服務(wù)器得到及時(shí)的響應(yīng)。該狀態(tài)是新加入 HTTP 1.1的。 

505 (HTTP Version Not Supported/不支持的 HTTP 版本)
    505 (SC_HTTP_VERSION_NOT_SUPPORTED)狀態(tài)碼是說服務(wù)器并不支持在請(qǐng)求中所標(biāo)明 HTTP 版本。該狀態(tài)是新加入 HTTP 1.1的。寫 HTTP 的客戶端,你最好還是檢查 511 狀態(tài)碼以確認(rèn)是否需要認(rèn)證后才能訪問。

     以上由 seo369 整理


其他人還看了
點(diǎn)擊排行
欄目導(dǎo)航
名詞解釋
SEO入門
SEO基礎(chǔ)
關(guān)鍵詞優(yōu)化
SEO技巧
SEO工具
SEO作弊
URL優(yōu)化
網(wǎng)站導(dǎo)航與鏈接
SEO | 網(wǎng)站優(yōu)化 | 各地SEO資訊 | 網(wǎng)站地圖
【SEO369】探索SEO優(yōu)化的奧秘,專業(yè)提供企業(yè)SEO、網(wǎng)站優(yōu)化、網(wǎng)站建設(shè)服務(wù)
版權(quán)所有:SEO369  備案號(hào):津ICP備08002309號(hào)
在線客服
網(wǎng)站優(yōu)化
QQ: 41868630
TEL: 4008001220