HTTP協議基礎

2021-08-28 19:59:08 字數 3525 閱讀 1991

http協議是hyper text transfer protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(www:world wide web )伺服器傳輸超文字到本地瀏覽器的傳送協議。。

http是乙個基於tcp/ip通訊協議來傳遞資料(html 檔案, 檔案, 查詢結果等)。

http協議工作於客戶端-服務端架構上。瀏覽器作為http客戶端通過url向http服務端即web伺服器傳送所有請求。

web伺服器有:apache伺服器,iis伺服器(internet information services)等。

web伺服器根據接收到的請求後,向客戶端傳送響應資訊。

http預設埠號為80,但是你也可以改為8080或者其他埠。

http三點注意事項:

客戶端傳送乙個http請求到伺服器的請求訊息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成,下圖給出了請求報文的一般格式。

http響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。

根據http標準,http請求可以使用多種請求方法。

http1.0定義了三種請求方法: get, post 和 head方法。

http1.1新增了五種請求方法:options, put, delete, trace 和 connect 方法。

序號

方法

描述1

get請求指定的頁面資訊,並返回實體主體。 2

head

類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 3

post

向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。post請求可能會導致新的資源的建立和/或已有資源的修改。 4

put從客戶端向伺服器傳送的資料取代指定的文件的內容。 5

delete

請求伺服器刪除指定的頁面。 6

connect

http/1.1協議中預留給能夠將連線改為管道方式的**伺服器。 7

options

允許客戶端檢視伺服器的效能。 8

trace

回顯伺服器收到的請求,主要用於測試或診斷。

http請求頭提供了關於請求,響應或者其他的傳送實體的資訊。

在本章節中我們將具體來介紹http響應頭資訊。

應答頭

說明

allow

伺服器支援哪些請求方法(如get、post等)。

content-encoding

content-length

表示內容長度。只有當瀏覽器使用持久http連線時才需要這個資料。如果你想要利用持久連線的優勢,可以把輸出文件寫入 bytearrayoutputstream,完成後檢視其大小,然後把該值放入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)用以響應瀏覽器的請求。

http狀態碼的英文為http status code。

下面是常見的http狀態碼:

http狀態碼由三個十進位制數字組成,第乙個十進位制數字定義了狀態碼的型別,後兩個數字沒有分類的作用。http狀態碼共分為5種型別:

http狀態碼分類

分類

分類描述

1**資訊,伺服器收到請求,需要請求者繼續執行操作

2**成功,操作被成功接收並處理

3**重定向,需要進一步的操作以完成請求

4**客戶端錯誤,請求包含語法錯誤或無法完成請求

5**伺服器錯誤,伺服器在處理請求的過程中發生了錯誤

http協議基礎

定義 http協議是一種基於請求 響應模式的,無狀態協議.請求方法 http 1.1 方法 作用 get 請求獲取由request uri所所標識的資源 post 在request uri所標識的資源後附加新的資訊 head 請求獲取由request uri所所標識的資源的響應訊息報頭 put 請求...

Http協議基礎

一直忽略了一些最基礎,最本質的東西。是時候該補補了 http基於請求與響應模式的 無狀態的 應用層的協議,常基於tcp的連線方式。http允許傳輸任意型別的資料物件,http協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致...

http協議基礎

安全牛 web安全課程筆記 明文 https只能提高傳輸層安全。而且不防中間人 無狀態 cookie cycle 請求 響應 header set cookie 伺服器發給客戶端 content length 可以用於快速鑑別不同的頁面 由伺服器發給客戶端 location 重定向使用者到另乙個頁面...