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.
CVPR 2020 論文大盤點-光流篇
2.
Photoshop教程_ps中怎麼載入圖案?PS圖案如何導入?
3.
org.pentaho.di.core.exception.KettleDatabaseException:Error occurred while trying to connect to the
4.
SonarQube Scanner execution execution Error --- Failed to upload report - 500: An error has occurred
5.
idea 導入源碼包
6.
python學習 day2——基礎學習
7.
3D將是頁遊市場新賽道?
8.
osg--交互
9.
OSG-交互
10.
Idea、spring boot 圖片(pgn顯示、jpg不顯示)解決方案
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
http超文本協議,讓http不再難懂(二)
2.
一張思維導圖,讓 HTTP 超文本協議不再難懂
3.
讓Spring再也不難懂
4.
讓java再也不難懂
5.
HTTP協議(超文本傳送協議)
6.
HTTP協議(超文本傳輸協議)
7.
http協議(超文本傳輸協議)
8.
也談HTTP協議
9.
再談HTTP協議
10.
HTTP(超文本傳輸協議)
>>更多相關文章<<