HTTP協議學習筆記

1.HTTP協議簡介

(1)客戶端連上web服務器后,若想獲得web服務器中的某個web資源,需遵守一定的通訊格式,HTTP協議用于定義客戶端與web服務器通迅的格式。

(2)HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用于定義WEB瀏覽器與WEB服務器之間交換數據的過程。

(3)HTTP使用請求-響應的方式進行傳輸,一個請求對應一個響應,并且請求只能是由客戶端發起的。

(4)HTTP協議的版本:HTTP/1.0、HTTP/1.1

兩個版本的區別
在HTTP1.0協議中,客戶端與web服務器建立連接后,只能獲得一個web資源。
HTTP1.1協議,允許客戶端與web服務器建立連接后,在一個連接上獲取多個web資源。

2.HTTP請求

客戶端連上服務器后,向服務器請求某個web資源,稱之為客戶端向服務器發送了一個HTTP請求。一個完整的HTTP請求包括:一個請求行、若干請求頭、以及實體內容。
例:
http請求

2.1 HTTP請求行

請求行:GET /books/java.html HTTP/1.1
GET:請求方式。
/books/java.html :請求的資源
HTTP/1.1 :請求協議

請求行中的請求方式有7種,下表為各請求方式的簡要介紹。

方法意義
OPTION請求一些選項的信息
GET向服務器請求某種WEB資源
HEAD請求讀取由URL所標志的信息的首部
POST向服務器請求某種WEB資源
PUT在指明的URL下存儲一個文檔
DELETE刪除指明的URL下所標志的資源
TRACE用來進行環回測試的請求報文
CONNECT用于代理服務器

請求方式總共有7種,但是最常用的有兩種,即 GET 和 POST。
不管POST或GET,都用于向服務器請求某個WEB資源,這兩種方式的區別主要表現在數據傳遞上:

  1. GET
    如請求方式為GET方式,則可以在請求的URL地址后以?的形式帶上交給服務器的數據,多個數據之間以&進行分隔。
    例如:
    GET /mail/1.html?name=abc&password=xyz HTTP/1.1
    GET方式的特點:在URL地址后附帶的參數是有限制的,其數據容量通常不能超過1K。

  2. POST
    如請求方式為POST方式,則可以在請求的實體內容中向服務器發送數據。
    Post方式的特點:傳送的數據量無限制。

注:若用戶如沒有設置,默認情況下瀏覽器向服務器發送的都是get請求

2.2 HTTP消息頭

用于HTTP請求中的常用頭
Accept: text/html,image/* ????????//瀏覽器可以接受哪種格式的數據
Accept-Charset: ISO-8859-1 ????????//瀏覽器接受數據可以采用的編碼集
Accept-Encoding: gzip,compress*????????//瀏覽器可以接受的數據壓縮格式*
Accept-Language: en-us,zh-cn????????//瀏覽器所在的語言環境
Host: www.baidu.com:80 ????????//瀏覽器所要訪問的區域
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ????????//與緩存相關的頭
Referer: http://www.baidu.com/index.html????????//表示當前訪問的web資源的連接來自何處,與防盜鏈有關
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ????????瀏覽器所在的環境信息
Cookie ????????//會話相關的頭
Connection: close/Keep-Alive ????????//這次請求結束后是否要接著保持連接
Date: Tue, 11 Jul 2000 18:23:51 GMT ????????//當前時間

3.HTTP響應

一個HTTP響應代表服務器向客戶端回送的數據,它包括:
一個狀態行、若干響應頭(消息頭)、以及實體內容
例:http響應

3.1 HTTP狀態行

格式:格式: HTTP版本號 狀態碼 原因敘述
舉例: HTTP/1.1 200 OK

其中狀態碼用于表示服務器對請求的處理結果,它是一個三位的十進制數。響應狀態碼分為5類,如下所示:

狀態碼含義
100~199表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程
200~299表示成功接收請求并已完成整個處理過程,常用200
300~399為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址,常用302、307和304
400~499客戶端的請求有錯誤,常用404
500~599服務器端出現錯誤,常用 500

常用的狀態碼有:
200:表示請求處理成功。
302:表示請求重定向。
304/307:表示通知瀏覽器再次請求的資源沒有更改,請使用瀏覽器緩存中的資源。
404:表示請求的資源沒有找到。
500:表示服務器端出錯。

3.2 HTTP常用響應頭

Location: http://www.baidu.com.index.html ???//配合302響應碼實現請求重定向
Server:apache tomcat ???//服務器的基本信息
Content-Encoding: gzip ???//服務器發送數據時使用的壓縮格式
Content-Length: 80 ???//發送數據的大小
Content-Language: zh-cn ???//發送數據時使用的語言環境
Content-Type: text/html; charset=GB2312 ???//當前所發送的數據的基本信息(數據類型,所使用的編碼)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT ???//與緩存相關
Refresh: 1;url=http://www.baidu.com
//通過瀏覽器進行定時刷新,此值可以是一個數字指定多長時間以后刷新當前頁面,這個數字之后也可以接一個分號跟一個URL地址指定多長時間后跳轉到該URL地址
Content-Disposition: attachment;filename=aaa.zip ???//與下載相關
Transfer-Encoding: chunked
傳輸數據類型,如果此值為chunked,說明當前的數據是一塊一塊傳輸的。
Set-Cookie:SS=Q0=5Lb_nQ; path=/search ???//與Cookie會話相關
ETag: W/”83794-1208174400000” ???//和緩存機制相關
Expires: -1 ???//指定資源緩存的時間,如果取值為0或-1瀏覽器就不緩存資源。
Cache-Control: no-cache ???//與緩存相關,如果為no-cache則通知瀏覽器不緩存
Pragma: no-cache ???//與緩存相關,如果為no-cache則通知瀏覽器不緩存
Connection: close/Keep-Alive ???//是否保持連接
Date: Tue, 11 Jul 2000 18:23:51 GMT ???//當前時間

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249662.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

defer和async的原理與區別

上一篇剛轉載了一篇有關于網站性能優化的文章,其中提及到了頁面的加載和渲染的過程,提到了defer和async的相關區別,但是本人在此之前并沒有深究其中的區別。 defer和async是script標簽的兩個屬性,用于在不阻塞頁面文檔解析的前提…

一些奇妙的線段樹操作

學過數據結構和會做題完全是兩個概念orz 各種各樣的題目都應該見識一下 簡單的目錄: 最大連續長度 吉司機線段樹 線段樹合并/分裂 最大連續長度問題 典型題目:HDU 3911 ($Black$ $And$ $White$) 題目大意:有一個長度為…

微服務實踐沙龍-上海站

微服務的概念最早由Martin Fowler與James Lewis于2014年共同提出,核心思想是圍繞業務能力組織服務,各個微服務可被獨立部署,服務間是松耦合的關系,以及數據和治理的去中心化管理。微服務能夠幫助企業應對業務復雜、頻繁更新以及團…

Spring的refresh()方法調用過程

Spring的refresh()方法調用過程 refresh()是Spring中比較核心的方法,Spring所有的初始化都在這個方法中完成 具體代碼如下 public void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// Prepare this co…

Web數據存儲之localStorage和sessionStorage

Web數據存儲之localStorage和sessionStorage 學習前端以來,自己了解有localStorage和sessionStorage的相關存儲的知識,也有實踐過,但是之前只限于能用的基礎上,但最近看了一本書,深入了解了localStorage和sessionStor…

(四)RabbitMQ消息隊列-服務詳細配置與日常監控管理

(四)RabbitMQ消息隊列-服務詳細配置與日常監控管理 原文:(四)RabbitMQ消息隊列-服務詳細配置與日常監控管理RabbitMQ服務管理 啟動服務:rabbitmq-server -detached【 /usr/local/rabbitmq/sbin/rabbitmq-server -deta…

oracle中delete、truncate、drop的區別 (轉載)

一、delete 1、delete是DML,執行delete操作時,每次從表中刪除一行,并且同時將該行的的刪除操作記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動提交…

前端開發工程化探討--基礎篇(長文)

轉載自UC資深前端工程師張云龍的github 喂喂喂,那個切圖的,把頁面寫好就發給研發工程師套模板吧。 你好,切圖仔。 不知道你的團隊如何定義前端開發,據我所知,時至今日仍然有很多團隊會把前端開發歸類為產品或者設計崗…

Python讀取Json字典寫入Excel表格的方法

需求: 因需要將一json文件中大量的信息填入一固定格式的Excel表格,單純的復制粘貼肯定也能完成,但是想偷懶一下,于是借助Python解決問題。 環境: Windows7 Python2.7 Xlwt 具體分析: 原始文件為json列表&am…

Spring-BeanFactory源碼分析

正式進入Spring 源碼分析這個模塊了,對于spring這個龐大的工程,如果要一點點的完全分析是非常困難的,對于應用型框架,我還是偏向于掌握思想或者設計,而不是記住代碼,對于初次看spring源碼,相信大…

Linux查看修改時間、時區

同步網絡時間 yum install ntpntpdate time.nist.gov timedatectl set-timezone Asia/Shanghai如果上面time.nist.gov服務器同步不了,可以換下面幾個時間服務器試試:time.nist.govtime.nuri.net0.asia.pool.ntp.org1.asia.pool.ntp.org2.asia.pool.ntp.o…

我所知道的HTTP和HTTPS

摘要:相比之前的傳輸協議,HTTP/2在底層方面做了很多優化。有安全、省時、簡化開發、更好的適應復雜頁面、提供緩存利用率等優勢,阿里云早在去年發布的CDN6.0服務就已正式支持HTTP/2,訪問速度最高可提升68%。 寫在前面 超文本傳輸…

sql server常用性能計數器

https://blog.csdn.net/kk185800961/article/details/52462913?utm_sourceblogxgwz5 https://blog.csdn.net/kk185800961/article/details/27657239 以下部分轉自:http://www.cnblogs.com/zhijianliutang/p/4174697.html 常規計數器 收集操作系統服務器的服務器性能…

Python中正反斜杠('/'和'\')的意義

剛剛在學習些測試報告的時候,出現一個路徑的問題,找了很久的原因,竟然是少了一個反斜杠引起的,在此順便記錄一下正反斜杠的作用。 在Python中,記錄路徑時有以下幾種寫法,如:(大家都知…

什么是IOC容器

1.IOC不是一種技術,只是一種思想,一個重要的面向對象編程的法則,它能指導我們如何設計出松耦合,更優良的程序。傳統應用程序都是由我們在類內部主動創建依賴對象,從而導致類與類之間高耦合,難于測試&#x…

Jenkins配置與使用

Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins是基于Java開發的一種持續集成工具,用于監控持續重復的工作,功能包括:1、持續的軟件版本發布/測試項目。2、監控外部調用…

fastDFS使用

fastDFS : 分布式文件系統C語言開發,fastDFS為互聯網量身定制,考慮到了冗余備份,負載均衡,線性擴容...很容易搭建集群文件存儲系統.存儲在fastDFS圖片:相當于存儲在本地磁盤一樣訪問圖片:相當于訪問本地磁盤存儲結構:組名/虛擬磁盤路徑/動態生成文件名.擴展名192.168.100.20/gr…

本地環境用eclipse搭建spring源碼環境

對于JAVA和.NET開發人員來講Spring框架并不陌生,對于想進行spring源碼學習的同學來講,在本地下載和構建spring項目很有必要。以下簡要說明下Spring源碼的下載和在eclipse下的構建方式。 工具/原料 JDK Eclipse 我們需要從源碼庫下載Spring的源碼文件到本…

SpringToolsSuite (STS)或Eclipse安裝gradle

對于新手剛進入職場,不知怎么在Spring Tools Suite (STS)或Eclipse上安裝gradle,因為該項目自動化構建開源工具在一些企業中是要用的。本經驗介紹如何安裝。 工具/原料 Spring Tools Suite (STS)或Eclipse開發工具 gradle-5.0-all.zip壓縮包 下載Gradle…