http原理學習筆記

來源:互聯網
上載者:User

標籤:http   原理   協議   

http協議之URL文法詳解

URL :Unifrom Resource Locator

URL方案:scheme

伺服器位址:ip:port

資源路徑;

http://www.mageedu.com:80/bbs/index.php

https://

基本文法:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

params:參數,如gender=f

http://www.mageedu.com/bbs/hello;gender=f

query:查詢

http://www.mageedu.com/bbs/item.php?username=tom&title=abc

frag:片段,#為錨定符號,定位於較大頁面的某一個片段

相對URL:不完整的路徑,相對某一資源路徑來擷取下一個資源的路徑指明方式

絕對URL:

同一站內資源使用相對URL,跨站應用時用絕對URL,當然同站內資源使用絕對URL也是沒問題的

http協議:

http/0.9,http/1.0,http/1.1,http/2.0

http協議:stateless

http協議之cookie、session和http事務

伺服器無法持續追蹤訪問者來源

所以需要通過cookie,session來實現

http事務:

請求:request

響應:response

報文文法格式:

request報文

<method> <request-URL> <version>

<headers>

<entity-body>

response報文

<version> <status> <reason-phrase>

<headers>  //響應首部

<entity-body>

method:要求方法,標明用戶端希望伺服器對資源執行的動作

GET HEAD POST

version:

HTTP/<major>.<minor>

status:

  響應狀態代碼,用三位元字,如200,301,302,404,502;用於標記請求處理過程中發生的情況;

reason-phrase:

狀態代碼所標記的狀態的簡要描述;如200 返回的OK,404返回的not found

headers:

每個請求或響應報文可包含任意首部;每個首部都有一個首部名稱,後面跟一個冒號,而後跟上一個可選空格,接著是一個值;

entity-body:

請求時附加的資料或響應時附加的資料;

----------------------------------------------------------------------------------------------------------

method(方法):

GET:從伺服器擷取一個資源;

HEAD:只從伺服器擷取文檔的響應首部;

POST:向伺服器發送伺服器要處理的資料;在請求內容中是有資料的,包含在entity-body中

PUT:將請求的主題部分儲存在伺服器上,簡單來說向伺服器上傳資料;此時entity-body中一定包含內容

DELETE:請求刪除伺服器上指定的文檔;

TRACE:追蹤請求到達伺服器中間經過的Proxy 伺服器;

OPTIONS:請求伺服器返回對指定資源使用的要求方法;

協議查看或分析的工具:tcpdump,tshark,wireshark

----------------------------------------------------------------------------------------------------------

status(狀態代碼):

1xx:100-101,資訊提示;

2xx:200-206,表示成功類的響應資訊

3xx:300-305,表示重新導向

4xx:400-415,錯誤類資訊,用戶端發生的錯誤

5xx:500-505,錯誤類資訊,伺服器端錯誤

常用的狀態代碼:

200:成功,請求的所有資料通過響應報文的entity-body部分發送;OK

301:請求的URL指向的資源已經被刪除;但在響應報文中通過首部location指明了資源現在所處的新位置;moved Permantly

302:與301相似,但在響應報文中通過Location指明資源現在所處臨時新位置;

304:用戶端發出了條件式請求,但伺服器上的資源未曾發生改變,則通過響應此響應狀態代碼通知用戶端;not Modified

401:需要輸入帳號和密碼認證方能訪問資源;Unauthorized

403:請求被禁止;Forbidden

404:伺服器無法找到用戶端請求的資源;Not Found

500:伺服器內部錯誤;Internal Server error

502:Proxy 伺服器從後端伺服器收到了一條偽響應;bad gateway

----------------------------------------------------------------------------------------------------------

headers樣式:

格式:

Name:value

如:

Response Headers (響應首部)

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Connection:keep-alive

Content-Encoding:gzip

Content-Type:text/html

Date:Thu, 27 Jul 2017 08:07:48 GMT

Expires:Thu, 19 Nov 1981 08:52:00 GMT

Load-Balancing:web01

Load-Balancing:web01

Pragma:no-cache

Server:Tengine

Transfer-Encoding:chunked

Vary:Accept-Encoding

Vary:Accept-Encoding

Request Headers (請求首部)

Accept:application/json, text/javascript, */*; q=0.01

Accept-Encoding:gzip, deflate

Accept-Language:zh-CN,zh;q=0.8

Connection:keep-alive

Host:edu.51cto.com

Referer:http://edu.51cto.com/course/5547.html

User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

X-Requested-With:XMLHttpRequest

----------------------------------------------------------------------------------------------------------

首部的分類:(通用首部、請求首部、響應首部、實體首部)

通用首部(既可以用在請求報文中,又可以用在響應報文中)

Date:報文的建立時間

Connection:串連方式,如keepalive,close

Via:顯示報文經過的中間節點

Cache-Control:控制緩衝的生效機制

Pragma

----------------------------------------------------------------------------------------------------------

請求首部:

Accept:通知伺服器自己可接受的媒體類型;

Accept-Charset:通知伺服器能接受的字元集

Accept-Encoding:通知伺服器可接受的編碼格式,如gzip

Accept-Language:通知伺服器可接受的語言

Client-IP:用戶端ip

Host:請求的伺服器名稱和連接埠號碼

Referer:包含當前正在請求的資源的上一級資源

User-Agent:用戶端代理類型

條件式請求首部:

Expect

If-Modified-since:自從指定的時間之後,請求的資源是否發生修改

If-Unmodified-since:

If-None-Match:本機快取中儲存的文檔的Etag標籤是否與伺服器文檔

的Etag不匹配

If-Match:本機快取中儲存的文檔的Etag標籤是否與伺服器文檔

的Etag匹配

安全請求首部:

Authorization:向伺服器發送認證資訊,如帳號和密碼;

Cookie:用戶端向伺服器發送cookie

Cookie2:用戶端向伺服器發送cookie2

代理請求首部:

Proxy-Authorization:向Proxy 伺服器認證

----------------------------------------------------------------------------------------------------------

響應首部:

資訊性首部:

Age:響應持續時間長度

Server:伺服器程式軟體名稱和版本

協商首部:(某自願有多種表示方法時使用)

Accept-Ranges:伺服器可接受的請求範圍類型

Vary:伺服器查看的其他首部列表

安全響應首部:

Set-Cookie:向用戶端設定cookie

Set-Cookie2:向用戶端設定cookie2

WWW-Authenticate:來自伺服器的對用戶端的質詢認證表單

實體首部:

Allow:列出對此試題可使用的要求方法

Location:告訴用戶端真正的實體位於何處

Content-Encoding:內容的編碼格式

Content-Language:內容的語言

Content-Length:主體的長度

Content-Location:實體真正所處的位置

Content-Type:主體的物件類型

緩衝相關:

Etag:實體的擴充標籤

Expires:實體的到期時間;

Last-Modified:最後一次修改的時間


本文出自 “IT看看看” 部落格,請務必保留此出處http://jinlong.blog.51cto.com/3276088/1951479

http原理學習筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.