HTTP相關(guān)

目錄:
1.HTTP 方法
2.HTTP 狀態(tài)碼
3.HTTP 報文
4.HTTP 和 HTTPS 的區(qū)別
5.HTTPS 相關(guān)

HTTP方法

  • GET 獲取資源

當(dāng)前網(wǎng)絡(luò)請求中范嘱,絕大部分使用的是 GET 方法茵乱。

  • HEAD 獲取報文首部

和GET方法類似尸昧,但是不返回報文實(shí)體主體部分。
主要用于確認(rèn)URL的有效性以及資源更新的日期時間等虐秋。

  • POST 傳輸實(shí)體主體

POST 主要用來傳輸數(shù)據(jù)邑时,而 GET 主要用來獲取資源咐蝇。
更多 POST 與 GET 的比較請見第九章狐胎。

  • PUT 上傳文件

由于自身不帶驗證機(jī)制鸭栖,任何人都可以上傳文件,因此存在安全性問題握巢,一般不使用該方法晕鹊。

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16

<p>New File</p>
  • PATCH 對資源進(jìn)行部分修改

PUT 也可以用于修改資源,但是只能完全替代原始資源,PATCH 允許部分修改溅话。

PATCH /file.txt HTTP/1.1
Host: www.example.com
Content-Type: application/example
If-Match: "e0023aa4e"
Content-Length: 100

[description of changes]
  • DELETE 刪除文件

與 PUT 功能相反晓锻,并且同樣不帶驗證機(jī)制。

DELETE /file.html HTTP/1.1
  • OPTIONS 查詢支持的方法

查詢指定的 URL 能夠支持的方法飞几。

會返回Allow: GET, POST, HEAD, OPTIONS這樣的內(nèi)容带射。

  • CONNECT 要求在與代理服務(wù)器通信時建立隧道

使用 SSL(Secure Sockets Layer,安全套接層)和 TLS(Transport Layer Security,傳輸層安全)協(xié)議把通信內(nèi)容加密后經(jīng)網(wǎng)絡(luò)隧道傳輸。

CONNECT www.example.com:443 HTTP/1.1
CONNECT
  • TRACE追蹤路徑

服務(wù)器會將通信路徑返回給客戶端唁盏。

發(fā)送請求時松申,在 Max-Forwards 首部字段中填入數(shù)值,每經(jīng)過一個服務(wù)器就會減 1关炼,當(dāng)數(shù)值為 0 時就停止傳輸程腹。

通常不會使用 TRACE,并且它容易受到 XST 攻擊(Cross-Site Tracing儒拂,跨站追蹤)寸潦。

不安全的http方法及其危害

1.PUT方法:自身不帶驗證機(jī)制,利用PUT方法即可快捷簡單地入侵服務(wù)器社痛,上傳Webshell或其他惡意文件见转,從而獲取敏感數(shù)據(jù)或服務(wù)器權(quán)限。
2.DELETE方法:自身不帶驗證機(jī)制蒜哀,利用DELETE方法可以刪除服務(wù)器上特定的資源文件斩箫,造成惡意攻擊。
3.OPTIONS方法:將會造成服務(wù)器信息暴露撵儿,如中間件版本乘客、支持的HTTP方法等。
4.TRACE方法:容易引發(fā)XST攻擊(見網(wǎng)站安全相關(guān))
5.PATCH方法:修改資源的部分內(nèi)容


HTTP 狀態(tài)碼

HTTP狀態(tài)碼根據(jù)首位數(shù)字的不同淀歇,其代表的含義也不同:

1XX:信息狀態(tài)碼
  • 100(Continue):一切正常易核,可以繼續(xù)發(fā)送請求
2XX:成功狀態(tài)碼
  • 200(OK):請求成功
  • 204(No Content):請求成功,但響應(yīng)報文無實(shí)體主體浪默。一般用于客戶端往服務(wù)端發(fā)送信息而不需要返回數(shù)據(jù)時牡直。
  • 206(Partial Content):客戶端進(jìn)行了范圍請求,響應(yīng)報文中有 Content-Range 指定范圍的實(shí)體內(nèi)容浴鸿。
3XX:重定向狀態(tài)碼
  • 301(Moved Permanently):永久重定向
  • 302(Found):臨時重定向
  • 303(See Other):臨時重定向井氢,要求瀏覽器不會把重定向請求的 POST 方法改成 GET 方法
    注:雖然 HTTP 協(xié)議規(guī)定 301、302 狀態(tài)下重定向時不允許把 POST 方法改成 GET 方法岳链,但是大多數(shù)瀏覽器都會在 301花竞、302 和 303 狀態(tài)下的重定向把 POST 方法改成 GET 方法。
  • 304(Not Modified):無變化/未修改/只讀,服務(wù)器對比數(shù)據(jù)發(fā)現(xiàn)未修改约急,客戶端直接從本地緩存讀取即可零远,返回該狀態(tài)嗎
  • 307(Temporary Redirect):臨時重定向,要求post方法
4XX:客戶端狀態(tài)碼
  • 400(Bad Request):報文語法錯誤
  • 402(Unauthorized):需要認(rèn)證厌蔽,一般是要求登錄
  • 403(Forbidden):請求被拒絕牵辣,一般是權(quán)限不足
  • 404(Not Found):找不到網(wǎng)頁
    409(Conflict):請求的資源與該資源的當(dāng)前狀態(tài)發(fā)生沖突
    410(Gone):資源在服務(wù)器上已被永久性刪除
5XX:服務(wù)端狀態(tài)碼
  • 500(Internal Server Error):服務(wù)器執(zhí)行請求時法發(fā)生錯誤
  • 503(Service Unavailable):服務(wù)器超負(fù)載/停機(jī)維護(hù),現(xiàn)在無法處理請求奴饮。校園網(wǎng)選課經(jīng)常返回該值纬向。

最全的HTTP1.1狀態(tài)碼


HTTP 報文

HTTP首部字段包含四種:

  1. 通用首部字段(General Header Fields):請求和響應(yīng)報文兩方都會使用的首部字段。
首部字段名 說明
Cache-Control 控制緩存的行為
Connection 控制不再轉(zhuǎn)發(fā)給代理的首部字段戴卜、管理持久連接
Date 創(chuàng)建報文的日期時間
Pragma 報文指令
Trailer 報文末端的首部一覽
Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級為其他協(xié)議
Via 代理服務(wù)器的相關(guān)信息
Warning 錯誤通知
  1. 請求首部字段(Reauest Header Fields):客戶端向服務(wù)器發(fā)送請求的報文時使用的首部逾条。補(bǔ)充了請求的附加內(nèi)容、客戶端信息投剥、響應(yīng)內(nèi)容相關(guān)的優(yōu)先等級信息师脂。
首部字段名 說明
Accept 用戶代理可處理的媒體類型
Accept-Charset 優(yōu)先的字符集
Accept-Encoding 優(yōu)先的內(nèi)容編碼
Accept-Language 優(yōu)先的語言(自然語言)
Authorization Web 認(rèn)證信息
Expect 期待服務(wù)器的特定行為
From 用戶的電子郵箱地址
Host 請求資源所在服務(wù)器
If-Match 比較實(shí)體標(biāo)記(ETag)
If-Modified-Since 比較資源的更新時間
If-None-Match(1.1) 比較實(shí)體標(biāo)記(與 If-Match 相反)
If-Range(1.1) 資源未更新時發(fā)送實(shí)體 Byte 的范圍請求
If-Unmodified-Since(1.1) 比較資源的更新時間(與 If-Modified-Since 相反)
Max-Forwards 最大傳輸逐跳數(shù)
Proxy-Authorization 代理服務(wù)器要求客戶端的認(rèn)證信息
Range(1.1) 實(shí)體的字節(jié)范圍請求(斷點(diǎn)續(xù)傳)
Referer 對請求中 URI 的原始獲取方
TE 傳輸編碼的優(yōu)先級
User-Agent HTTP 客戶端程序的信息
  1. 響應(yīng)首部字段(Response Header Fields):從服務(wù)器向客戶端響應(yīng)時使用的字段,補(bǔ)充響應(yīng)的附加內(nèi)容江锨,也會要求客戶端附加額外信息
首部字段名 說明
Accept-Ranges 是否接受字節(jié)范圍請求
Age 推算資源創(chuàng)建經(jīng)過時間
ETag(1.1) 資源的匹配信息
Location 令客戶端重定向至指定 URI
Proxy-Authenticate 代理服務(wù)器對客戶端的認(rèn)證信息
Retry-After 對再次發(fā)起請求的時機(jī)要求
Server HTTP 服務(wù)器的安裝信息
Set-Cookie 在瀏覽器種cookie吃警,一旦被種下,當(dāng)瀏覽器訪問符合條件的url地址時啄育,會自動帶上這個cookie
Vary 代理服務(wù)器緩存的管理信息
WWW-Authenticate 服務(wù)器對客戶端的認(rèn)證信息
  1. 實(shí)體首部字段(Entiy Header Fields)|針對請求報文和響應(yīng)報文的實(shí)體部分使用首部酌心。補(bǔ)充了資源內(nèi)容更新時間等實(shí)體有關(guān)的信息。
首部字段名 說明
Allow 資源可支持的 HTTP 方法
Content-Encoding 實(shí)體主體適用的編碼方式
Content-Language 實(shí)體主體的自然語言
Content-Length 實(shí)體主體的大小
Content-Location 替代對應(yīng)資源的 URI
Content-MD5 實(shí)體主體的報文摘要
Content-Range 實(shí)體主體的位置范圍
Content-Type 實(shí)體主體的媒體類型
Expires 實(shí)體主體過期的日期時間
Last-Modified 資源的最后修改日期時間

小知識點(diǎn):

  • 降低服務(wù)器壓力的方法[參考3]
    細(xì)節(jié)可看我的文章HTTP緩存

  • 請求首部字段Referer和安全相關(guān)
    細(xì)節(jié)可看我的文章XSS灸撰,CSRF谒府,XST等網(wǎng)站安全

  • 請求首部字段Max-Forwards和TRACE、OPTIONS方法有關(guān)系
    細(xì)節(jié)可看我的文章


HTTP 和 HTTPS 的區(qū)別

主要區(qū)別如下:
  1. https協(xié)議需要到ca申請證書浮毯,一般免費(fèi)證書較少完疫,因而需要一定費(fèi)用。
  2. http是超文本傳輸協(xié)議债蓝,基于TCP連接壳鹤,信息是明文傳輸;https運(yùn)行在SSL/TLS之上饰迹,SSL/TLS運(yùn)行在TCP之上芳誓,所有傳輸內(nèi)容都經(jīng)過加密。
  3. http和https使用的端口不一樣啊鸭,前者是80锹淌,后者是443。
  4. http的連接很簡單赠制,是無狀態(tài)的赂摆;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全烟号。

HTTPS 相關(guān)

HTTPS 的工作原理

我們都知道HTTPS能夠加密信息绊谭,以免敏感信息被第三方獲取,所以很多銀行網(wǎng)站或電子郵箱等等安全級別較高的服務(wù)都會采用HTTPS協(xié)議汪拥。

1. 客戶端發(fā)起HTTPS請求
  這個沒什么好說的达传,就是用戶在瀏覽器里輸入一個https網(wǎng)址,然后連接到server的443端口迫筑。

2. 服務(wù)端的配置
  采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書宪赶,可以自己制作,也可以向組織申請脯燃,區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過逊朽,才可以繼續(xù)訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇曲伊,有1年的免費(fèi)服務(wù))。
  這套證書其實(shí)就是一對公鑰和私鑰追他,如果對公鑰和私鑰不太理解坟募,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙邑狸,你可以把鎖頭給別人懈糯,別人可以用這個鎖把重要的東西鎖起來,然后發(fā)給你单雾,因為只有你一個人有這把鑰匙赚哗,所以只有你才能看到被這把鎖鎖起來的東西。

3. 傳送證書
  這個證書其實(shí)就是公鑰硅堆,只是包含了很多信息屿储,如證書的頒發(fā)機(jī)構(gòu),過期時間等等渐逃。

4. 客戶端解析證書
  這部分工作是有客戶端的TLS來完成的够掠,首先會驗證公鑰是否有效,比如頒發(fā)機(jī)構(gòu)茄菊,過期時間等等疯潭,如果發(fā)現(xiàn)異常,則會彈出一個警告框面殖,提示證書存在問題竖哩。
如果證書沒有問題,那么就生成一個隨機(jī)值脊僚,然后用證書對該隨機(jī)值進(jìn)行加密相叁,就好像上面說的,把隨機(jī)值用鎖頭鎖起來,這樣除非有鑰匙钝荡,不然看不到被鎖住的內(nèi)容街立。

5. 傳送加密信息
  這部分傳送的是用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個隨機(jī)值埠通,以后客戶端和服務(wù)端的通信就可以通過這個隨機(jī)值來進(jìn)行加密解密了赎离。

6. 服務(wù)段解密信息
  服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰)端辱,然后把內(nèi)容通過該值進(jìn)行對稱加密梁剔,所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起舞蔽,這樣除非知道私鑰荣病,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個私鑰渗柿,所以只要加密算法夠彪悍个盆,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全朵栖。

7. 傳輸加密后的信息
  這部分信息是服務(wù)段用私鑰加密后的信息颊亮,可以在客戶端被還原。

8. 客戶端解密信息
  客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息陨溅,于是獲取了解密后的內(nèi)容终惑,整個過程第三方即使監(jiān)聽到了數(shù)據(jù),也束手無策门扇。

HTTPS 的優(yōu)點(diǎn)

正是由于HTTPS非常的安全雹有,攻擊者無法從中找到下手的地方,從站長的角度來說臼寄,HTTPS的優(yōu)點(diǎn)有以下2點(diǎn):

1. SEO方面
  谷歌曾在2014年8月份調(diào)整搜索引擎算法霸奕,并稱“比起同等HTTP網(wǎng)站,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會更高”吉拳。

2. 安全性
  盡管HTTPS并非絕對安全铅祸,掌握根證書的機(jī)構(gòu)、掌握加密算法的組織同樣可以進(jìn)行中間人形式的攻擊合武,但HTTPS仍是現(xiàn)行架構(gòu)下最安全的解決方案临梗,主要有以下幾個好處:
(1)使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器稼跳;
(2)HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸盟庞、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全汤善,可防止數(shù)據(jù)在傳輸過程中不被竊取什猖、改變票彪,確保數(shù)據(jù)的完整性。
(3)HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案不狮,雖然不是絕對安全降铸,但它大幅增加了中間人攻擊的成本。

HTTPS 的缺點(diǎn)

雖然說 HTTPS 有很大的優(yōu)勢摇零,但其相對來說推掸,還是有些不足之處的,具體來說驻仅,有以下2點(diǎn):

  1. SEO方面
      據(jù)ACM CoNEXT數(shù)據(jù)顯示谅畅,使用HTTPS協(xié)議會使頁面的加載時間延長近50%,增加10%到20%的耗電噪服,此外毡泻,HTTPS協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗粘优,甚至已有安全措施也會受到影響也會因此而受到影響仇味。
      而且HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊雹顺、拒絕服務(wù)攻擊邪铲、服務(wù)器劫持等方面幾乎起不到什么作用。
      最關(guān)鍵的无拗,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下昧碉,中間人攻擊一樣可行英染。

  2. 經(jīng)濟(jì)方面
    (1)SSL證書需要錢,功能越強(qiáng)大的證書費(fèi)用越高被饿,個人網(wǎng)站四康、小網(wǎng)站沒有必要一般不會用。
    (2)SSL證書通常需要綁定IP狭握,不能在同一IP上綁定多個域名闪金,IPv4資源不可能支撐這個消耗(SSL有擴(kuò)展可以部分解決這個問題,但是比較麻煩论颅,而且要求瀏覽器哎垦、操作系統(tǒng)支持,Windows XP就不支持這個擴(kuò)展恃疯,考慮到XP的裝機(jī)量漏设,這個特性幾乎沒用)。
    (3)HTTPS連接緩存不如HTTP高效今妄,大流量網(wǎng)站如非必要也不會采用郑口,流量成本太高鸳碧。
    (4)HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本犬性,如果全部采用HTTPS瞻离,基于大部分計算資源閑置的假設(shè)的VPS的平均成本會上去。
    (5)HTTPS協(xié)議握手階段比較費(fèi)時乒裆,對網(wǎng)站的相應(yīng)速度有負(fù)面影響套利,如非必要,沒有理由犧牲用戶體驗缸兔。

參考:
[1].CS-Notes
[2].不安全的http方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末日裙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惰蜜,更是在濱河造成了極大的恐慌昂拂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抛猖,死亡現(xiàn)場離奇詭異格侯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)财著,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門联四,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撑教,你說我怎么就攤上這事朝墩。” “怎么了伟姐?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵收苏,是天一觀的道長。 經(jīng)常有香客問我愤兵,道長鹿霸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任秆乳,我火速辦了婚禮懦鼠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屹堰。我一直安慰自己肛冶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布扯键。 她就那樣靜靜地躺著淑趾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忧陪。 梳的紋絲不亂的頭發(fā)上扣泊,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天近范,我揣著相機(jī)與錄音,去河邊找鬼延蟹。 笑死评矩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阱飘。 我是一名探鬼主播斥杜,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沥匈!你這毒婦竟也來了蔗喂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤高帖,失蹤者是張志新(化名)和其女友劉穎缰儿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體散址,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乖阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了预麸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞪浸。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吏祸,靈堂內(nèi)的尸體忽然破棺而出对蒲,到底是詐尸還是另有隱情,我是刑警寧澤贡翘,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布蹈矮,位于F島的核電站,受9級特大地震影響床估,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诱渤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一丐巫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勺美,春花似錦递胧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至占卧,卻和暖如春遗菠,著一層夾襖步出監(jiān)牢的瞬間联喘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工辙纬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豁遭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓贺拣,卻偏偏與公主長得像蓖谢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子譬涡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355