http協議詳解及操作
網際網路,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用,核心就是不同構建在TCP/IP協議基礎上的http請求。固本求原,本篇文章將對http協議進行整理學習、然後使用程式碼去操作。
1.http協議
1.1如何工作
HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。
HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的連結來交換資訊,是一個無狀態的請求/響應協議。
一個HTTP"客戶端"是一個應用程式(Web瀏覽器或其他任何客戶端),通過連線到伺服器達到向伺服器傳送一個或多個HTTP的請求的目的。
一個HTTP"伺服器"同樣也是一個應用程式(通常是一個Web服務,如Apache Web伺服器或IIS伺服器等),通過接收客戶端的請求並向客戶端傳送HTTP響應資料。
HTTP使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。
HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。
以下圖表展示了HTTP協議通訊流程:
因此,該協議就是客戶端和伺服器交換資料的一攬子標準。
1.1.1客戶端的http請求
可以是瀏覽器發起請求,也可以是程式程式碼去發起。
序號 | 方法 | 描述 |
---|---|---|
1 | GET | 請求指定的頁面資訊,並返回實體主體。 |
2 | HEAD | 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報文 |
3 | POST | 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 |
4 | PUT | 從客戶端向伺服器傳送的資料取代指定的文件的內容。 |
5 | DELETE | 請求伺服器刪除指定的頁面。 |
6 | CONNECT | HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。 |
7 | OPTIONS | 允許客戶端檢視伺服器的效能。 |
8 | TRACE | 回顯伺服器收到的請求,主要用於測試或診斷。 |
1.1.2伺服器的http響應
HTTP響應也由四個部分組成,分別是:狀態行、訊息報文、空行和響應正文。
1.2協議特點
HTTP協議的主要特點可概括如下:
1.支援客戶/伺服器模式。
2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。
3.靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。
4.無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
1.3HTTP協議的報文
HTTP訊息由客戶端到伺服器的請求和伺服器到客戶端的響應組成,請求和響應由HTTP報文傳遞,報文是簡單的格式化資料塊。
起始行和首部就是由行分隔的ASCII文字。每行都以一個由兩個字元組成的行終止序列作為結束,其中包括一個回車符(ASCII碼13)和一個換行符(ASCII碼10)。
請求訊息和響應訊息都是由以下內容組成:
- 起始行(對於請求訊息,開始行就是請求行,對於響應訊息,開始行就是狀態行)
- 訊息報文(首部)(可選)
- 空行(只有CRLF的行)
- 訊息正文(主體)(可選)
如圖,一個請求報文的示意:
每一個報文域都是由名字+“:”+空格+值 組成,訊息報文域的名字是大小寫無關的。
如圖:一個訪問百度的請求報文和響應報文(header)
HTTP訊息報文包括普通報文、請求報文、響應報文、實體報文。
1.3.1.普通報文
在普通報文中,有少數報文域用於所有的請求和響應訊息,但並不用於被傳輸的實體,只用於傳輸的訊息。
eg:
Cache-Control 用於指定快取指令,快取指令是單向的(響應中出現的快取指令在請求中未必會出現),且是獨立的(一個訊息的快取指令不會影響另一個訊息處理的快取機制),HTTP1.0使用的類似的報文域為Pragma。
請求時的快取指令包括:no-cache(用於指示請求或響應訊息不能快取)、no-store、max-age、max-stale、min-fresh、only-if-cached;
響應時的快取指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
1.3.2.請求報文
請求報文允許客戶端向伺服器端傳遞請求的附加資訊以及客戶端自身的資訊。
Header | 解釋 | 示例 |
---|---|---|
Accept | 指定客戶端能夠接收的內容型別 | Accept: text/plain, text/html |
Accept-Charset | 瀏覽器可以接受的字元編碼集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定瀏覽器可以支援的web伺服器返回內容壓縮編碼型別。 | Accept-Encoding: compress, gzip |
Accept-Language | 瀏覽器可接受的語言 | Accept-Language: en,zh |
Accept-Ranges | 可以請求網頁實體的一個或者多個子範圍欄位 | Accept-Ranges: bytes |
Authorization | HTTP授權的授權證書 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定請求和響應遵循的快取機制 | Cache-Control: no-cache |
Connection | 表示是否需要持久連線。(HTTP 1.1預設進行持久連線) | Connection: close |
Cookie | HTTP請求傳送時,會把儲存在該請求域名下的所有cookie值一起傳送給web伺服器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 請求的內容長度 | Content-Length: 348 |
Content-Type | 請求的與實體對應的MIME資訊 | Content-Type: application/x-www-form-urlencoded |
Date | 請求傳送的日期和時間 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 請求的特定的伺服器行為 | Expect: 100-continue |
From | 發出請求的使用者的Email | From: [email protected] |
Host | 指定請求的伺服器的域名和埠號 | Host: www.zcmhi.com |
If-Match | 只有請求內容與實體相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果請求的部分在指定時間之後被修改則請求成功,未被修改則返回304程式碼 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果內容未改變返回304程式碼,引數為伺服器先前傳送的Etag,與伺服器迴應的Etag比較判斷是否改變 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果實體未改變,伺服器傳送客戶端丟失的部分,否則傳送整個實體。引數也為Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在實體在指定時間之後未被修改才請求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards | 限制資訊通過代理和閘道器傳送的時間 | Max-Forwards: 10 |
Pragma | 用來包含實現特定的指令 | Pragma: no-cache |
Proxy-Authorization | 連線到代理的授權證書 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只請求實體的一部分,指定範圍 | Range: bytes=500-999 |
Referer | 先前網頁的地址,當前請求網頁緊隨其後,即來路 | Referer: http://www.zcmhi.com/archives/71.html |
TE | 客戶端願意接受的傳輸編碼,並通知伺服器接受接受尾加頭資訊 | TE: trailers,deflate;q=0.5 |
Upgrade | 向伺服器指定某種傳輸協議以便伺服器進行轉換(如果支援) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的內容包含發出請求的使用者資訊 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中間閘道器或代理伺服器地址,通訊協議 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 關於訊息實體的警告資訊 | Warn: 199 Miscellaneous warning |
1.3.3.響應報文
響應報文允許伺服器傳遞不能放在狀態行中的附加響應資訊,以及關於伺服器的資訊和對Request-URI所標識的資源進行下一步訪問的資訊。
Header | 解釋 | 示例 |
---|---|---|
Accept-Ranges | 表明伺服器是否支援指定範圍請求及哪種型別的分段請求 | Accept-Ranges: bytes |
Age | 從原始伺服器到代理快取形成的估算時間(以秒計,非負) | Age: 12 |
Allow | 對某網路資源的有效的請求行為,不允許則返回405 | Allow: GET, HEAD |
Cache-Control | 告訴所有的快取機制是否可以快取及哪種型別 | Cache-Control: no-cache |
Content-Encoding | web伺服器支援的返回內容壓縮編碼型別。 | Content-Encoding: gzip |
Content-Language | 響應體的語言 | Content-Language: en,zh |
Content-Length | 響應體的長度 | Content-Length: 348 |
Content-Location | 請求資源可替代的備用的另一地址 | Content-Location: /index.htm |
Content-MD5 | 返回資源的MD5校驗值 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== |
Content-Range | 在整個返回體中本部分的位元組位置 | Content-Range: bytes 21010-47021/47022 |
Content-Type | 返回內容的MIME型別 | Content-Type: text/html; charset=utf-8 |
Date | 原始伺服器訊息發出的時間 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
ETag | 請求變數的實體標籤的當前值 | ETag: “737060cd8c284d8af7ad3082f209582d” |
Expires | 響應過期的日期和時間 | Expires: Thu, 01 Dec 2010 16:00:00 GMT |
Last-Modified | 請求資源的最後修改時間 | Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT |
Location | 用來重定向接收方到非請求URL的位置來完成請求或標識新的資源 | Location: http://www.zcmhi.com/archives/94.html |
Pragma | 包括實現特定的指令,它可應用到響應鏈上的任何接收方 | Pragma: no-cache |
Proxy-Authenticate | 它指出認證方案和可應用到代理的該URL上的引數 | Proxy-Authenticate: Basic |
refresh | 應用於重定向或一個新的資源被創造,在5秒之後重定向(由網景提出,被大部分瀏覽器支援) | Refresh: 5; url= http://www.zcmhi.com/archives/94.html |
Retry-After | 如果實體暫時不可取,通知客戶端在指定時間之後再次嘗試 | Retry-After: 120 |
Server | web伺服器軟體名稱 | Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) |
Set-Cookie | 設定Http Cookie | Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 |
Trailer | 指出頭域在分塊傳輸編碼的尾部存在 | Trailer: Max-Forwards |
Transfer-Encoding | 檔案傳輸編碼 | Transfer-Encoding:chunked |
Vary | 告訴下游代理是使用快取響應還是從原始伺服器請求 | Vary: * |
Via | 告知代理客戶端響應是通過哪裡傳送的 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 警告實體可能存在的問題 | Warning: 199 Miscellaneous warning |
WWW-Authenticate | 表明客戶端請求實體應該使用的授權方案 | WWW-Authenticate: Basic |
1.3.4.實體報文
請求和響應訊息都可以傳送一個實體。一個實體由實體報文域和實體正文組成,但並不是說實體報文域和實體正文要在一起傳送,可以只發送實體報文域。
HTTP實體的組成:實體首部和實體主體。
實體首部:描述了HTTP報文的內容
實體主體:實體主體即原始資料
1.3.4.1實體首部
Allow:列出了可以對此實體執行的請求方法
Location:告知客戶端實體實際上位於何處,用於將接收端定向到資源的位置(URL)上去
Content-Base:解析主體中的相對URL時使用的基礎URL
Content-Encoding:對主體執行的任意編碼方式
Content-Language:理解主體時最適宜使用的自然語言
Content-Length:主體的長度
Content-Location:資源實際所處的位置
Content-MD5:主體的MD5校驗和
Content-Range:在整個資源中此實體表示的位元組範圍
Content-Type:這個主體的物件型別
ETag:與此實體相關的實體標記
Expires:實體不再有效,要從原始的源端再次獲取實體的日期和時間
Last-Modified:這個實體最後一次被修改的日期和時間
1.3.4.2.實體的主體
該部分其實就是HTTP要傳輸的內容,是可選的。HTTP報文可以承載很多型別的數字資料,比如,圖片、視訊、HTML文件電子郵件、軟體應用程式等等。
這是大頭。但是描述的資訊很少,說明http並不是很care你傳輸的是什麼東西,它就是一個負責運輸的工具。
1.3.5狀態碼
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭(server header)用以響應瀏覽器的請求。
HTTP狀態碼由三個十進位制數字組成,第一個十進位制數字定義了狀態碼的型別,後兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:
HTTP狀態碼的英文為HTTP Status Code。 下面是常見的HTTP狀態碼:
分類 | 分類描述 |
---|---|
1** | 資訊,伺服器收到請求,需要請求者繼續執行操作 |
2** | 成功,操作被成功接收並處理 |
3** | 重定向,需要進一步的操作以完成請求 |
4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
5** | 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤 |
2用Python操作http請求
2.1python處理http的包選型
根據前人踩坑描述,Python 3 處理HTTP請求的包:http,urllib,urllib3,requests。
http是偏低層的,一般不使用。
urllib也是一個包,裡面含有多個模組:urllib.request,urllib.error,urllib.parse,urllib.robotparser。
這裡的urllib.request 跟python 2.X 的urllib2有點像。urllib.request 基於http.client,但是比 http.client 更高層一些。
相比python的標準庫,urllib3有很多很重要的特性,比如執行緒安全等。同時urllib3也很強大而且易於使用。
urllib3:https://pypi.python.org/pypi/urllib3
Requests 基於urllib3,號稱“Requests is an elegant and simple HTTP library for Python, built for human beings.”,意思就是專門為人類設計的HTTP庫。
Requests:http://docs.python-requests.org/en/latest/index.html
2.2urllib3
我作為爬坑的,我說還是不要用它了,不方便。urllib3預設不支援https,支援也可以,請你做點額外的工作。user-guide上都有。
# -*- coding: utf-8 -*-
'''學習使用urlib3,集合了大部分方法的使用Demo.by windanchaos'''
import urllib3
'''
You’ll need a PoolManager instance to make requests.
This object handles all of the details of connection pooling and thread safety.
'''
http = urllib3.PoolManager()
# make a request use request()
# request() returns a HTTPResponse object
# HTTPResponse返回了http的表頭headers\狀態碼status\實體data.
# 定義超時和重試次數
r1 = http.request('GET', 'http://www.baidu.com',timeout=4.0,retries=10)
r2 = http.request('GET', 'http://httpbin.org/robots.txt')
print(r1.status)
# headers 是header的dict
print(r1.headers)
print(r1.data)
print(r2.status)
print(r2.headers)
print(r2.data)
# 請求資料的組織,下面訪問baidu,使用手機端的User-Agent組織請求報頭,返回的data就是移動端的了
agent={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) \
Version/9.0 Mobile/13B143 Safari/601.1'}
r3 = http.request('GET', 'http://www.baidu.com', headers=agent)
print(r3.data)
# post和put請求,需要自己encode請求的引數
from urllib import urlencode
import json
encoded_args = urlencode({'arg': 'value'})
url4 = 'http://httpbin.org/post?' + encoded_args
r4 = http.request('POST', url4)
print(json.loads(r4.data.decode('utf-8'))['args'])
# 當然如果是form資料,urllib3也可以幫你encode,如:
r5 = http.request('POST', 'http://httpbin.org/post', fields={'field': 'value'})
print(json.loads(r5.data.decode('utf-8'))['form'],r5.status)
# post json demo
data = {'attribute': 'value'}
encoded_data = json.dumps(data).encode('utf-8')
r6 = http.request('POST', 'http://httpbin.org/post', body=encoded_data, headers={'Content-Type': 'application/json'})
print(json.loads(r6.data.decode('utf-8'))['json'])
# post file and binary data
'''
For uploading files using multipart/form-data encoding you can use the same approach as Form data and specify
the file field as a tuple of (file_name, file_data)
'''
with open('example.txt') as fp:
file_data = fp.read()
r7 = http.request('POST','http://httpbin.org/post', fields={'filefield': ('example.txt', file_data, 'text/plain')})
json.loads(r7.data.decode('utf-8'))['files']
'''
For sending raw binary data simply specify the body argument. It’s also recommended to set the Content-Type header
'''
with open('example.jpg', 'rb') as fp:
binary_data = fp.read()
r8 = http.request('POST','http://httpbin.org/post',body=binary_data,headers={'Content-Type': 'image/jpeg'})
json.loads(r8.data.decode('utf-8'))['data']
# 對ssl預設是不支援的。需要提供額外的配置或下載額外的包。
# log & Errors & Exceptions¶
'''
If you are using the standard library logging module urllib3 will emit several logs.
In some cases this can be undesirable.
You can use the standard logger interface to change the log level for urllib3’s logger
>>>logging.getLogger("urllib3").setLevel(logging.WARNING)
>>> try:
... http.request('GET', 'nx.example.com', retries=False)
>>> except urllib3.exceptions.NewConnectionError:
... print('Connection failed.')
'''
2.3requests
文章超長了。轉到下一篇繼續。
相關推薦
http協議詳解及操作
網際網路,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用,核心就是不同構建在TCP/IP協議基礎上的http請求。固本求原,本篇文章將對http協議進行整理學習、然後使用程式碼去操作。 1.http協議 1.1如何工作 HTTP協議是Hyper T
http協議詳解及htt面試題目,常見的http狀態碼
HTTP報文是面向文字的,報文中的每一個欄位都是一些ASCII碼串,各個欄位的長度是不確定的。HTTP有兩類報文:請求報文和響應報文。 HTTP請求報文 一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求資料4個部分組成,下
HTTP協議詳解(真的很經典)
cnp 運用 web應用 media 服務器端 所有 長度 request bad 轉載:http://e7kan.com/?p=264& 引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾
http協議詳解
表單 pos 換行 none 必須掌握 通信 pow print expires HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1
HTTP 協議詳解
範圍 文件傳輸 ext text 繼續 warn 分組 asi nsf 前言: 之前買過一本《圖解 HTTP》這本書,作者好像是個小日本,也繼承了小日本在動漫方面的天賦,30% 的內容都是 Q 版畫圖。 之後沒有引起我的重視,書一借出去,然後,之後 .. 之後,
Http 協議詳解筆記
code sps 網頁 提示 agent tor 指定 6.0 lec HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六
HTTP協議詳解以及URL具體訪問過程
標記語言 初始化 折疊 code 文件類型 scheme 缺少 gif 其他瀏覽器 1、簡介 1.1、HTTP協議是什麽? 即超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議,所有的WWW文件都必
HTTP協議詳解??
www protocol tcp url web nsf ide 信息 http HTTP 協議是 Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web)服務器傳輸超文本到本地瀏覽器的傳送
WebSocket協議詳解及應用
https://blog.csdn.net/u014520745/article/details/52639452 WebSocket協議詳解及應用(一)-初識WebSocket 一、什麼是WebSocket WebSocket是一個允許Web應用程式(通常指瀏覽器)與
Javaweb:http協議詳解
HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generat
筆記轉載 HTTP [轉]HTTP協議詳解,你所不知道的
[轉]HTTP協議詳解,你所不知道的 什麼是HTTP協議 協議是指計算機通訊網路中兩臺計算機之間進行通訊所必須共同遵守的規定或規則,超文字傳輸協議(HTTP)是一種通訊協議,它允許將超文字標記語言(HTML)文件從Web伺服器傳送到客戶端的瀏覽器
HTTP協議詳解(真的很經典)--轉載
連續 查找 初始 出現 門戶 全部 4.0 form ons 概要: HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統 | |目錄 1引言 2一
HTTP協議詳解 轉自小坦克
當今web程式的開發技術真是百家爭鳴,ASP.NET, PHP, JSP,Perl, AJAX 等等。 無論Web技術在未來如何發展,理解Web程式之間通訊的基本協議相當重要, 因為它讓我們理解了Web應用程式的內部工作. 本文將對HTTP協議進行詳細的例項
HTTP協議-HTTP協議詳解
HTTP協議是一個網際網路協議,不僅用來傳輸網頁。也被很多的軟體用來與伺服器通訊,在協議中包含了許多的通訊樣式的規定等,接下來就讓我們從頭開始瞭解它。 3.1. 在TCP/IP協議棧中的位置 HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模
第六章 應用層(DNS和http協議詳解)
序言 這是計算機網路基礎的最後一篇博文了,大體的從物理層到最上層的應用層做了一個大概的瞭解,花了也有快1個月的時間了,在本章結尾會給你們我學習該課程的視訊資料,我希望能幫到所有想學習想提高自己技術的同學,我看到很多厲害的的部落格的文章都被鎖了,我希望高手度能夠幫助剛成長並且想努力提高技術
Java當中的HTTP協議詳解
HTTP協議 1. 什麼是協議 雙方在互動、通訊的時候,遵守的一種規範、規則。 2. HTTP協議 針對網路上的客戶端與伺服器端在執行HTTP請求的時候,遵守的一種規範,其實就是規定了客戶端在訪問伺服器的時候,要帶上那些東西,伺服器端返回資料的時候,也要帶上什
HTTP 協議詳解
HTTP 協議詳解 引言 HTTP 是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1 的規範化工作
web測試基礎---url+http協議詳解
URL的構成: URL和URI: URL:統一資源定位符,URI:統一資源識別符號(URI是抽象的,而URL是具體化的,屬於URI範疇) 一般來說,http請求都會和URL地址有關,對於URL來說一般
第20課 SPI協議詳解及裸機程式開發分析
第001節_SPI協議介紹 市面上的開發板很少接有SPI裝置,但是SPI協議在工作中經常用到。我們開發了SPI模組,上面有SPI Flash和SPI OLED。OLED就是一塊顯示器。 我們裸板程式會涉及兩部分: 用GPIO模擬SPI 用S3C2440的
Http協議詳解②
一、概念 協議是指計算機通訊網路中兩臺計算機之間進行通訊所必須共同遵守的規定或規則,超文字傳輸協議(HTTP)是一種通訊協議,它允許將超文字標記語言(HTML)文件從Web伺服器傳送到客戶端的瀏覽器。 HTTP協議,即超文字傳輸協議(Hypertext transfer p