JavaShuo
欄目
標籤
http超文本協議,讓http再也不難懂
時間 2019-11-07
標籤
http
超文本
協議
再也不
難懂
欄目
HTTP/TCP
简体版
原文
原文鏈接
一張思惟導圖:
協議
HyperText Transfer Protocol,超文本傳輸協議
一個無狀態的請求/響應協議
是因特網上應用最爲普遍的一種網絡傳輸協議,全部的WWW文件都必須遵照這個標準
基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)
工做原理
默認端口號爲80
工做於客戶端-服務端架構爲上
瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求
Web服務器根據接收到的請求後,向客戶端發送響應信息
注意事項
HTTP是無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。
HTTP是媒體獨立的:這意味着,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據均可以經過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。
http響應
客戶端請求消息
示意圖
組成部分
請求行(request line)
請求頭部(header)
空行
請求數據
服務器響應消息
示意圖
組成部分
狀態行
消息報頭
空行
響應正文
請求方法
GET
請求指定的頁面信息,並返回實體主體。
HEAD
相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。
PUT
從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE
請求服務器刪除指定的頁面。
CONNECT
HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。
OPTIONS
容許客戶端查看服務器的性能。
TRACE
回顯服務器收到的請求,主要用於測試或診斷。
響應頭信息
Allow
服務器支持哪些請求方法(如GET、POST等)。
Content-Encoding
文檔的編碼(Encode)方法。只有在解碼以後才能夠獲得Content-Type頭指定的內容類型。利用gzip壓 縮文檔可以顯著地減小HTML文檔的下載時間。Java的GZIPOutputStream能夠很方便地進行gzip壓縮,但只有Unix上的 Netscape和Windows上的IE 四、IE 5才支持它。所以,Servlet應該經過查看Accept-Encoding頭(即request.getHeader("Accept- Encoding"))檢查瀏覽器是否支持gzip,爲支持gzip的瀏覽器返回經gzip壓縮的HTML頁面,爲其餘瀏覽器返回普通頁面。
Content-Length
表示內容長度。只有當瀏覽器使用持久HTTP鏈接時才須要這個數據。若是你想要利用持久鏈接的優點,能夠把輸出文檔寫入 ByteArrayOutputStram,完成後查看其大小,而後把該值放入Content-Length頭,最後經過 byteArrayStream.writeTo(response.getOutputStream()發送內容。
Content-Type
表示後面的文檔屬於什麼MIME類型。Servlet默認爲text/plain,但一般須要顯式地指定爲text/html。因爲常常要設置Content-Type,所以HttpServletResponse提供了一個專用的方法setContentType。
Date
當前的GMT時間。你能夠用setDateHeader來設置這個頭以免轉換時間格式的麻煩。
Expires
應該在何時認爲文檔已通過期,從而再也不緩存它?
Last-Modified
文檔的最後改動時間。客戶能夠經過If-Modified-Since請求頭提供一個日期,該請求將被視爲一個條件 GET,只有改動時間遲於指定時間的文檔纔會返回,不然返回一個304(Not Modified)狀態。Last-Modified也可用setDateHeader方法來設置。
Location
表示客戶應當到哪裏去提取文檔。Location一般不是直接設置的,而是經過HttpServletResponse的sendRedirect方法,該方法同時設置狀態代碼爲302。
Refresh
表示瀏覽器應該在多少時間以後刷新文檔,以秒計。除了刷新當前文檔以外,你還能夠經過setHeader("Refresh", "5; URL=
http://host/path
")讓瀏覽器讀取指定的頁面。 注 意這種功能一般是經過設置HTML頁面HEAD區的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=
http://host/path
">實現,這是由於,自動刷新或重定向對於那些不能使用CGI或Servlet的 HTML編寫者十分重要。可是,對於Servlet來講,直接設置Refresh頭更加方便。 注意Refresh的意義是"N秒以後刷 新本頁面或訪問指定頁面",而不是"每隔N秒刷新本頁面或訪問指定頁面"。所以,連續刷新要求每次都發送一個Refresh頭,而發送204狀態代碼則可 以阻止瀏覽器繼續刷新,不論是使用Refresh頭仍是<META HTTP-EQUIV="Refresh" ...>。 注意Refresh頭不屬於HTTP 1.1正式規範的一部分,而是一個擴展,但Netscape和IE都支持它。
Server
服務器名字。Servlet通常不設置這個值,而是由Web服務器本身設置。
Set-Cookie
設置和頁面關聯的Cookie。Servlet不該使用response.setHeader("Set-Cookie", ...),而是應使用HttpServletResponse提供的專用方法addCookie。參見下文有關Cookie設置的討論。
WWW-Authenticate
客戶應該在Authorization頭中提供什麼類型的受權信息?在包含401(Unauthorized)狀態行的 應答中這個頭是必需的。例如,response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"")。 注意Servlet通常不進行這方面的處理,而是讓Web服務器的專門機制來控制受密碼保護頁面的訪問(例如.htaccess)。
狀態碼
說明
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。
分類
1** - 信息,服務器收到請求,須要請求者繼續執行操做
2** - 成功,操做被成功接收並處理
3** - 重定向,須要進一步的操做以完成請求
4** - 客戶端錯誤,請求包含語法錯誤或沒法完成請求
5** - 服務器錯誤,服務器在處理請求的過程當中發生了錯誤
常見狀態碼
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它URL
404 - 請求的資源(網頁等)不存在
500 - 內部服務器錯誤
內容類型content-type
通常是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件,這就是常常看到一些Asp網頁點擊的結果倒是下載到的一個文件或一張圖片的緣由
關注公衆號號java思惟導圖
相關文章
1.
http超文本協議,讓http不再難懂(二)
2.
一張思維導圖,讓 HTTP 超文本協議不再難懂
3.
讓Spring再也不難懂
4.
讓java再也不難懂
5.
HTTP協議(超文本傳送協議)
6.
HTTP協議(超文本傳輸協議)
7.
http協議(超文本傳輸協議)
8.
也談HTTP協議
9.
再談HTTP協議
10.
HTTP(超文本傳輸協議)
更多相關文章...
•
SOAP HTTP 協議
-
SOAP 教程
•
HTTP 簡介
-
HTTP 教程
•
SpringBoot中properties文件不能自動提示解決方法
•
IntelliJ IDEA中SpringBoot properties文件不能自動提示問題解決
相關標籤/搜索
http協議2
HTTP協議
http
http和https協議
圖解http協議
再也不
再也
再讓
http&httpd
http&https
HTTP/TCP
HTTP 教程
NoSQL教程
Docker教程
建議
文件系統
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
Android Studio3.4中出現某個項目全部亂碼的情況之解決方式
2.
Packet Capture
3.
Android 開發之 仿騰訊視頻全部頻道 RecyclerView 拖拽 + 固定首個
4.
rg.exe佔用cpu導致卡頓解決辦法
5.
X64內核之IA32e模式
6.
DIY(也即Build Your Own) vSAN時,選擇SSD需要注意的事項
7.
選擇深圳網絡推廣外包要注意哪些問題
8.
店鋪運營做好選款、測款的工作需要注意哪些東西?
9.
企業找SEO外包公司需要注意哪幾點
10.
Fluid Mask 摳圖 換背景教程
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
http超文本協議,讓http不再難懂(二)
2.
一張思維導圖,讓 HTTP 超文本協議不再難懂
3.
讓Spring再也不難懂
4.
讓java再也不難懂
5.
HTTP協議(超文本傳送協議)
6.
HTTP協議(超文本傳輸協議)
7.
http協議(超文本傳輸協議)
8.
也談HTTP協議
9.
再談HTTP協議
10.
HTTP(超文本傳輸協議)
>>更多相關文章<<