一、什么是HTTP協議
HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用于定義WEB瀏覽器與WEB服務器之間交換數據的過程。客戶端連上web服務器后,若想獲得web服務器中的某個web資源,需遵守一定的通訊格式,HTTP協議用于定義客戶端與web服務器通迅的格式。
二、HTTP協議的版本
HTTP協議的版本:HTTP/1.0、HTTP/1.1
三、HTTP1.0和HTTP1.1的區別
在HTTP1.0協議中,客戶端與web服務器建立連接后,只能獲得一個web資源。
在HTTP1.1協議,允許客戶端與web服務器建立連接后,在一個連接上獲取多個web資源。
四、HTTP請求
4.1、HTTP請求包括的內容
客戶端連上服務器后,向服務器請求某個web資源,稱之為客戶端向服務器發送了一個HTTP請求。
一個完整的HTTP請求包括如下內容:一個請求行、若干消息頭、以及實體內容
范例:
4.2、HTTP請求的細節——請求行
請求行中的GET稱之為請求方式,請求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有: GET、 POST
用戶如果沒有設置,默認情況下瀏覽器向服務器發送的都是get請求,例如在瀏覽器直接輸地址訪問,點超鏈接訪問等都是get,用戶如想把請求方式改為post,可通過更改表單的提交方式實現。
不管POST或GET,都用于向服務器請求某個WEB資源,這兩種方式的區別主要表現在數據傳遞上:如果請求方式為GET方式,則可以在請求的URL地址后以?的形式帶上交給服務器的數據,多個數據之間以&進行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特點:在URL地址后附帶的參數是有限制的,其數據容量通常不能超過1K。
如果請求方式為POST方式,則可以在請求的實體內容中向服務器發送數據,Post方式的特點:傳送的數據量無限制。
HTTP請求的方法:
HTTP/1.1協議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的操作方式
- OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法,也可以利用向web服務器發送‘*'的請求來測試服務器的功能性
- HEAD:向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小消息頭中的元信息。
- GET:向特定的資源發出請求。它本質就是發送一個請求來取得服務器上的某一資源。資源通過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。
- POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
- PUT:向指定資源位置上傳其最新內容
- DELETE:請求服務器刪除Request-URL所標識的資源
- TRACE:回顯服務器收到的請求,主要用于測試或診斷
- CONNECT:HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。
注意:
1)方法名稱是區分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應返回狀態碼501(Not Implemented)。
2)HTTP服務器至少應該實現GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法。
GET和POST的區別
1.標準答案
GET在瀏覽器回退時是無害的,而POST會再次提交請求。GET產生的URL地址可以被Bookmark,而POST不可以。GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。GET請求只能進行url編碼,而POST支持多種編碼方式。GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。GET請求在URL中傳送的參數是有長度限制的,而POST沒有。對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。GET參數通過URL傳遞,POST放在Request body中。
2.深入答案
GET和POST是HTTP協議中的兩種發送請求的方法。HTTP是基于TCP/IP關于數據如何在萬維網中如何通信的協議。(HTTP的底層是TCP/IP。所以GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP鏈接。GET和POST能做的事情是一樣一樣的。你要給GET加上request body,給POST帶上url參數,技術上是完全行的通的。)GET產生一個TCP數據包;POST產生兩個TCP數據包。(對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務器響應200(返回數據);而對于POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據))
4.3、HTTP請求的細節——消息頭
HTTP請求中的常用消息頭
accept:——瀏覽器通過這個頭告訴服務器,它所支持的數據類型Accept-Charset: ——瀏覽器通過這個頭告訴服務器,它支持哪種字符集Accept-Encoding:——瀏覽器通過這個頭告訴服務器,支持的壓縮格式Accept-Language:——瀏覽器通過這個頭告訴服務器,它的語言環境Host:——瀏覽器通過這個頭告訴服務器,想訪問哪臺主機If-Modified-Since:—— 瀏覽器通過這個頭告訴服務器,緩存數據的時間Referer:——瀏覽器通過這個頭告訴服務器,客戶機是哪個頁面來的 防盜鏈Connection:——瀏覽器通過這個頭告訴服務器,請求完后是斷開鏈接還是何持鏈接
例如:
1
|
< code class = "hljs lasso has-numbering" style = "display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;" >Accept: application/x< span class = "hljs-attribute" style = "box-sizing: border-box;" >-ms</ span >< span class = "hljs-attribute" style = "box-sizing: border-box;" >-application</ span >, image/jpeg, application/xaml< span class = "hljs-subst" style = "color: rgb(0, 0, 0); box-sizing: border-box;" >+</ span >< span class = "hljs-built_in" style = "color: rgb(102, 0, 102); box-sizing: border-box;" >xml</ span >, image/gif, image/pjpeg, application/x< span class = "hljs-attribute" style = "box-sizing: border-box;" >-ms</ span >< span class = "hljs-attribute" style = "box-sizing: border-box;" >-xbap</ span >, application/vnd< span class = "hljs-built_in" style = "color: rgb(102, 0, 102); box-sizing: border-box;" >.</ span >ms< span class = "hljs-attribute" style = "box-sizing: border-box;" >-excel</ span >, application/vnd< span class = "hljs-built_in" style = "color: rgb(102, 0, 102); box-sizing: border-box;" >.</ span >ms< span class = "hljs-attribute" style = "box-sizing: border-box;" >-powerpoint</ span >, application/msword, < span class = "hljs-subst" style = "color: rgb(0, 0, 0); box-sizing: border-box;" >*</ span >< span class = "hljs-comment" style = "color: rgb(136, 0, 0); box-sizing: border-box;" >/* Referer: http://localhost:8080/JavaWebDemoProject/Web/2.jsp Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3) Accept-Encoding: gzip, deflate Host: localhost:8080 Connection: Keep-Alive</ span ></ code >< ul class = "pre-numbering" style = "box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);" >< li style = "box-sizing: border-box; padding: 0px 5px;" >1</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >2</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >3</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >4</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >5</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >6</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >7</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >8</ li ></ ul > |
五、HTTP響應
5.1、HTTP響應包括的內容
一個HTTP響應代表服務器向客戶端回送的數據,它包括: 一個狀態行、若干消息頭、以及實體內容 。
范例:
1
|
< code class = "hljs http has-numbering" style = "display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;" >< span class = "hljs-status" style = "color: rgb(0, 0, 136); box-sizing: border-box;" >HTTP/1.1 < span class = "hljs-number" style = "color: rgb(0, 102, 102); box-sizing: border-box;" >200</ span > OK</ span > < span class = "hljs-attribute" style = "box-sizing: border-box;" >Server</ span >: < span class = "hljs-string" style = "color: rgb(0, 136, 0); box-sizing: border-box;" >Apache-Coyote/1.1</ span > < span class = "hljs-attribute" style = "box-sizing: border-box;" >Content-Type</ span >: < span class = "hljs-string" style = "color: rgb(0, 136, 0); box-sizing: border-box;" >text/html;charset=ISO-8859-1</ span > < span class = "hljs-attribute" style = "box-sizing: border-box;" >Content-Length</ span >: < span class = "hljs-string" style = "color: rgb(0, 136, 0); box-sizing: border-box;" >105</ span > < span class = "hljs-attribute" style = "box-sizing: border-box;" >Date</ span >: < span class = "hljs-string" style = "color: rgb(0, 136, 0); box-sizing: border-box;" >Tue, 27 May 2014 16:23:28 GMT</ span > < span class = "xml" style = "box-sizing: border-box;" >< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >html</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >head</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >title</ span >></ span >Hello World JSP< span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >title</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >head</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ><< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >body</ span >></ span > Hello World! < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >body</ span >></ span > < span class = "hljs-tag" style = "color: rgb(0, 102, 102); box-sizing: border-box;" ></< span class = "hljs-title" style = "box-sizing: border-box; color: rgb(0, 0, 136);" >html</ span >></ span ></ span ></ code >< ul class = "pre-numbering" style = "box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);" >< li style = "box-sizing: border-box; padding: 0px 5px;" >1</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >2</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >3</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >4</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >5</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >6</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >7</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >8</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >9</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >10</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >11</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >12</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >13</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >14</ li >< li style = "box-sizing: border-box; padding: 0px 5px;" >15</ li ></ ul > |
5.2、HTTP響應的細節——狀態行
狀態行格式: HTTP版本號 狀態碼 原因敘述
舉例:HTTP/1.1 200 OK
2開頭 (請求成功)表示成功處理了請求的狀態代碼。
200 (成功) 服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。
201 (已創建) 請求成功并且服務器創建了新的資源。
202 (已接受) 服務器已接受請求,但尚未處理。
203 (非授權信息) 服務器已成功處理了請求,但返回的信息可能來自另一來源。
204 (無內容) 服務器成功處理了請求,但沒有返回任何內容。
205 (重置內容) 服務器成功處理了請求,但沒有返回任何內容。
206 (部分內容) 服務器成功處理了部分 GET 請求。
3開頭 (請求被重定向)表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。
300 (多種選擇) 針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301 (永久移動) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302 (臨時移動) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。
304 (未修改) 自從上次請求后,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。
305 (使用代理) 請求者只能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。
307 (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
4開頭 (請求錯誤)這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。
400 (錯誤請求) 服務器不理解請求的語法。
401 (未授權) 請求要求身份驗證。 對于需要登錄的網頁,服務器可能返回此響應。
403 (禁止) 服務器拒絕請求。
404 (未找到) 服務器找不到請求的網頁。
405 (方法禁用) 禁用請求中指定的方法。
406 (不接受) 無法使用請求的內容特性響應請求的網頁。
407 (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。
408 (請求超時) 服務器等候請求時發生超時。
409 (沖突) 服務器在完成請求時發生沖突。 服務器必須在響應中包含有關沖突的信息。
410 (已刪除) 如果請求的資源已永久刪除,服務器就會返回此響應。
411 (需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。
412 (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。
413 (請求實體過大) 服務器無法處理請求,因為請求實體過大,超出服務器的處理能力。
414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理。
415 (不支持的媒體類型) 請求的格式不受請求頁面的支持。
416 (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會返回此狀態代碼。
417 (未滿足期望值) 服務器未滿足"期望"請求標頭字段的要求。
5開頭(服務器錯誤)這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。
500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求。
501 (尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。
502 (錯誤網關) 服務器作為網關或代理,從上游服務器收到無效響應。
503 (服務不可用) 服務器目前無法使用(由于超載或停機維護)。 通常,這只是暫時狀態。
504 (網關超時) 服務器作為網關或代理,但是沒有及時從上游服務器收到請求。
505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。
5.3、HTTP響應細節——常用響應頭
HTTP響應中的常用響應頭(消息頭)
- Location: 服務器通過這個頭,來告訴瀏覽器跳到哪里
- Server:服務器通過這個頭,告訴瀏覽器服務器的型號
- Content-Encoding:服務器通過這個頭,告訴瀏覽器,數據的壓縮格式
- Content-Length: 服務器通過這個頭,告訴瀏覽器回送數據的長度
- Content-Language:服務器通過這個頭,告訴瀏覽器語言環境
- Content-Type:服務器通過這個頭,告訴瀏覽器回送數據的類型
- Refresh:服務器通過這個頭,告訴瀏覽器定時刷新
- Content-Disposition:服務器通過這個頭,告訴瀏覽器以下載方式打數據
- Transfer-Encoding:服務器通過這個頭,告訴瀏覽器數據是以分塊方式回送的
- Expires: -1 控制瀏覽器不要緩存
- Cache-Control: no-cache
- Pragma:no-cache
HTTP與HTTPS的區別
超文本傳輸協議HTTP協議被用于在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此,HTTP協議不適合傳輸一些敏感信息,比如:信用卡號、密碼等支付信息。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS,為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。
一、HTTP和HTTPS的基本概念
HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
二、HTTP與HTTPS有什么區別?
HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:
- https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
- http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
- http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
- http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
三、HTTPS的工作原理
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會采用HTTPS協議。
客戶端在使用HTTPS方式與Web服務器通信時有以下幾個步驟,如圖所示。
- 客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。
- Web服務器收到客戶端請求后,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
- 客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。
- 客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然后利用網站的公鑰將會話密鑰加密,并傳送給網站。
- Web服務器利用自己的私鑰解密出會話密鑰。
- Web服務器利用會話密鑰加密與客戶端之間的通信。
四、HTTPS的優點
盡管HTTPS并非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:
- 使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
- HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。
- HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
- 谷歌曾在2014年8月份調整搜索引擎算法,并稱“比起同等HTTP網站,采用HTTPS加密的網站在搜索結果中的排名將會更高”。
五、HTTPS的缺點
雖然說HTTPS有很大的優勢,但其相對來說,還是存在不足之處的:
- HTTPS協議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;
- HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗,甚至已有的安全措施也會因此而受到影響;
- SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
- SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。
- HTTPS協議的加密范圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什么作用。最關鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
六、http切換到HTTPS
如果需要將網站從http切換到https到底該如何實現呢?
這里需要將頁面中所有的鏈接,例如js,css,圖片等等鏈接都由http改為https。例如:http://www.baidu.com改為https://www.baidu.com
BTW,這里雖然將http切換為了https,還是建議保留http。所以我們在切換的時候可以做http和https的兼容,具體實現方式是,去掉頁面鏈接中的http頭部,這樣可以自動匹配http頭和https頭。例如:將http://www.baidu.com改為//www.baidu.com。然后當用戶從http的入口進入訪問頁面時,頁面就是http,如果用戶是從https的入口進入訪問頁面,頁面即使https的。
到此這篇關于詳解Http協議以及post與get區別的文章就介紹到這了,更多相關Http協議以及post與get區別內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/StackFlow/article/details/79606309