1. 程式人生 > 實用技巧 >Http請求及響應

Http請求及響應

Http請求

1.請求行

  請求方式:POST、GET

  請求的資源/Demo/demo.html

  協議版本:HTTP/1.1

    HTTP/1.0,傳送請求,建立一次連線,獲得一個web資源,連線斷開

    HTTP/1.1,傳送請求,建立一次連線,獲得多個web資源,保持連線

2.請求頭

  請求頭是客戶端傳送給伺服器端的一些資訊,使用鍵值對錶示key:value

常見請求頭 描述
Referer 瀏覽器通知伺服器,當前請求來自何處。如果是直接訪問,則不會有這個頭,常用於:防盜鏈
If-Modified-Since 瀏覽器通知伺服器,本地快取的最後變更時間,與另一個響應頭組合控制瀏覽器頁面快取
Cookie 與會話有關技術,用於存放瀏覽器的cookie資訊
User-Agent 瀏覽器通知伺服器,客戶端瀏覽器與作業系統相關資訊
Connection 保持連線狀態。Keep-Alive連線中,close已關閉
Host 請求的伺服器主機名
Content-Length 請求體的長度
Content-Type 如果是POST請求,會有這個頭,預設值為application/x-www-form-urlencoded,表示請求體內容使用url編碼
Accept

瀏覽器可支援的MIME型別。檔案型別的一種描述方式。MIME格式:大型別/小型別[;引數]

例如:

  text/html,html檔案  text/css,css檔案  image/*,所有圖片檔案

Accept-Language 瀏覽器通知伺服器,瀏覽器支援的語言。各國語言(國際化i18n)
Accept-Encoding 瀏覽器通知伺服器,瀏覽器支援的資料壓縮格式。如:GZIP壓縮

3.請求體

  當請求方式是post的時候,請求體會有請求引數,

    username=zhangsan&password=123

  如果請求方式為get,name請求引數不會出現在請求體中,會拼接在url地址後面

    http://localhost:8080...?username=zhangsan&password=123

Http響應

1.響應行

  Http協議

  狀態碼:常用狀態碼如下

    200:請求成功

    302:請求重定向(跳轉)

    304:請求資源沒有改變,訪問本地快取

    404:請求資源不存在。路徑編寫錯誤或伺服器資源已刪除

    500:伺服器內部錯誤,程式拋異常

  狀態資訊:狀態資訊是根據狀態碼變化而變化的

2.響應頭

  響應也都是鍵值對形式,伺服器端將資訊以鍵值對的形式返回給客戶端

常見響應頭 描述
Location 指定響應路徑,需要與狀態碼302配合使用,完成跳轉
Content-Type 響應正文的型別(MIME型別),取值:text/html;charset=UTF-8
Content-Disposition

通過瀏覽器已下載方式解析正文

取值:attachment;filename=xx.zip

Set-Cookie 與會話相關技術。伺服器想瀏覽器寫入cookie
Content-Endoding

伺服器使用的壓縮格式

取值:gzip

COntent-length 響應正文的長度
Refresh

定時重新整理,格式:秒數;url=路徑。url可省略,預設值當前頁面

取值:3;url=www.baidu.com

//3秒重新整理頁面到www.baidu.com

Server

指的是伺服器名稱,預設值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改

<Connector port="8080"...server="itcast"/>

Last-Modified 伺服器通知瀏覽器,檔案的最後修改時間。與If-Modified-Since一起使用

3.響應體

  響應體是伺服器回寫給客戶端的頁面正文,瀏覽器將正文載入到記憶體,然後解析渲染 顯示頁面內容

Refresh定時重新整理

public class RefreshServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //定時shuaxin 
        response.setHeader("Refresh","5;url=http://www.baidu.com");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}