http相關知識點
http是一種基於tcp協議的無狀態的應用層協議,1.1加入keepAlive機制
由三部分組成
請求行
消息報頭
請求體
1.常用的http方法有哪些
- .get 請求被uri識別的資源
- post 用於傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
- head 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效。
- delete 刪除文件,與PUT方法相反,刪除對應URI位置的文件。
- put 傳遞文件
2.get與post區別
- get只能傳遞文本,不能傳遞文件,並且get傳遞文本長度受url長度限制
- get傳遞文本在url裏,而post在消息體裏,稍微安全一些
- get只支持ASCII編碼,可能會有亂碼,post可以正確傳輸正文
3.keepAlive
只要一端不斷開,tcp不會斷開
由於是通過pipeline,一次可以發送多個請求
4.常見header
請求行
包含請求方法、URI、HTTP版本信息
通用頭
- Date
- Connection
- CacheControl
請求頭
- Accept:application/json, text/javascript, /; q=0.01 可以處理的媒體類型
- Accept-Encoding:gzip, deflate
- Accept-Language:zh-CN,zh;q=0.8 課接收的語言
- Connection:keep-alive
- Host:123.56.13.168:8080 請求地址
- Origin:http://123.56.21.172:94 來源
- User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
狀態行
包含HTTP版本、狀態碼、狀態碼的原因短語
響應頭
- Access-Control-Allow-Credentials:true 是否允許將返回值暴露給頁面
- Access-Control-Allow-Origin:http://123.56.21.172:94 限制跨域
- Access-Control-Allow-Methods: 允許的方法
- Content-Length:105
- Content-Type:application/json;charset=UTF-8 返回值類型
- Date:Sat, 29 Jul 2017 02:13:26 GMT
- ETag:”04578e78098b351258cd1881c679d2614” etag用來表示返回值是否相同
- Server:Apache-Coyote/1.1
- Vary:Origin
響應體
5.狀態碼
302 :重定向,這個時候,響應頭裏的location會包含地址
方法一
response.setStatus(302);
response.setHeader(“location”, “/day06/index.jsp”);
方法二
response.sendRedirect(“/day06/index.jsp”);
6.如何理解http無狀態以及如何解決
- 通過cookie保存jessionId,這個時候可以通過session,這個方式只能保證單機,集羣的化可以用nginx sticky ip或者可以用redis來存登錄狀態