標籤:style blog http 使用 os strong 檔案 資料
一 HTTP響應的格式
web伺服器對用戶端的響應一般包含:一個狀態行,一些響應前序,一個空行和相應的文檔構成。
1,狀態行:
狀態行由HTTP版本,一個狀態碼以及一段對應狀態碼的簡短訊息組成,表示請求是否被理解或被滿足。HTTP版本由伺服器決定。狀態代碼一般由系統自動化佈建為200。也可以用Servlet設定狀態代碼。訊息巍峨自訂。
2,響應報。
3,空行
4,文檔
二 如何設定狀態碼
在向客戶程式發送任何文檔內容之前調用方法設定狀態碼。
使用HttpServletResponse介面的setStatus,sedRedirect或sendError方法設定狀態代碼。
狀態碼由3位元字組成,第一個數字定義了響應的類別,後面兩位元字沒有具體的分類。
在servlet中使用HttpServletResponse中定義的常量來引用狀態碼。
1 設定任意狀態碼:setStatus(int)方法
在用PrintWriter實際返回如何內容之前調用setstatus方法。
參數可以為int類型狀態碼,也可以為HttpServletResponse中定義的常量。
2 設定302和404狀態碼:sendRedirect(String url)和sendError(int code,String msg)方法。 二者拋出IOException。
狀態碼302命令瀏覽器串連到新的url。sendRedirect方法產生302響應及Location前序,給出新的url放入Location前序之前,系統自動將相對url轉換為絕對url。
狀態碼404用於伺服器沒有找到文檔的情況。sendError方法發送狀態碼及小段簡簡訊息,資訊被自動安排在HTML文檔中發送給使用者。
三 狀態碼的作用
[xml] view plaincopy
- 1,HTTP1.1中可用的特定狀態代碼
-
- 100-199:資訊性的標示使用者應該採取的其他動作。
-
- 200-299:表示請求成功。
-
- 300-399:用於那些已經移走的檔案,常常包括Location前序,指出新的地址。
-
- 400-499:表明客戶引發的錯誤。
-
- 500-599:由伺服器引發的錯誤。
-
-
-
- 2,Servlet與用戶端互動使用的重要狀態碼。
-
- 100(Continue,繼續):表示用戶端程式在詢問是否可以在隨後的請求中向伺服器發送附加文檔。伺服器使用100(SC_CONTINUE)表示繼續,417(SC_EXPECTATION_FAILED)表示不接受該附件。
-
-
-
- 200(OK, 一切正常):200(SC_OK)表示一切正常。
-
- 202(Accepted,已經接受):202(SC_ACCEPTED)請求已經接受,但處理沒有完成。
-
- 204(No Content,沒有新文檔):204(SC_NO_CONTENT)由於沒有新的文檔供顯示,繼續顯示之前的文檔。
-
- 205(Rest Content,重設內容):205(SC_REST_CONTENT)表示沒有新的文檔,但瀏覽器應該重設文檔視圖。用來指示瀏覽器清除表單的欄位。
-
-
-
-
-
- 301(Moved Permanently,被永久移動):301(SC_MOVED_PERMANENTLY)表示所請求的檔案已經被移動到別處。文檔的新URL在Location響應前序中給出,瀏覽器應該重新串連到新URL。
-
- 302(Found,找到):302(SC_MOVED_PERMANENTLY)。301和302等同,區別在302將Location前序中給出的URL看作是非永久性的臨時替代。瀏覽器自動重新串連到Location響應前序中給出的URL。
-
- 304(Not Modified,未發生更改):304(SC_NOT_MODIFIED)表示緩衝的版本是否為最新。是的話用戶端就應該使用它,否則伺服器應該返回所請求的文檔,設定正常狀態代碼。
-
- Servlet不應該直接使用這個狀態碼,應該實現getLastModified方法,由預設的Service方法來處理。
-
- 307和303區別:接收到303響應則繼續進行get和post請求的重新導向,接受到307,對於get請求繼續重新導向,而post則不再繼續。
-
-
-
-
-
- 400:表明客戶請求中含有語法錯誤。
-
- 401:表客戶程式試圖訪問密碼保護的頁面。
-
- 403:表示伺服器拒絕提供相關的資源,不管是否授權。
-
- 404:(SC_NOT_FOUND)沒有如何資源供訪問。
-
- 405:這個資源不容許使用要求方法訪問。
-
- 415:伺服器不知道如何處理請求附加檔案類型。
-
- 417:回應100,告訴瀏覽器不接受該附件。
-
-
-
-
-
- 500:表示伺服器運行混亂。由CGI程式或Servlet崩潰或返回不正確格式的前序引起。
-
- 501:表示伺服器不支援該客戶程式發送的命令。
-
- 503:由於維護或超負荷工作引起伺服器不能做出響應。
-
- 505:表示伺服器不支援要求行中給出的HTTP版本。
四 重新串連,重定位,重新整理的區別:
重新串連不顯示任何中間頁面。
重新整理的時候瀏覽器會臨時顯示一個中間頁面。
重定位由另外的Servlet或網頁產生結果,而非該ServletB本身。
重定位作用:
預Crowdsourced Security Testing道目的地,可以驗證相關資料後再轉送到相關目的地。 通過自己的網站公布使用者需要訪問的網站連結,跟蹤使用者的行為,統計訪問等。得到相關資訊後,再將使用者重新導向到實際需要訪問的網站。
五 進行重新置放和跳轉到錯誤頁面
使用sendRedirect(String url)方法向瀏覽器發送302狀態碼,瀏覽器自動重新串連到Location響應前序中sendRedirect方法給出的URL,重新置放到相關頁面。
使用sendError(response.SC_NOT_FOUND,String msg)方法設定輸出的錯誤提示資訊。
六 根據瀏覽器的不同將使用者重新置放到相關頁面的Servlet。
擷取User-Agent請求前序區分不同的瀏覽器類型,使用sendRedirect(String url)方法向瀏覽器發送302狀態碼,瀏覽器自動重新串連到Location響應前序中sendRedirect方法給出的URL,重新置放到相關頁面。