HTTP首部(1)

1、報文首部

   

  HTTP協議的請求和響應必定包含HTTP首部,它包括了客戶端和服務端分別處理請求和響應提供所需要的信息。報文主體字兒是所需要的用戶和資源的信息都在這邊。 

  HTTP請求報文組成

?????  ? 方法,URL,HTTP版本,HTTP首部字段

  

  HTTP響應報文組成

??????   HTTP版本,狀態碼(數字和原因短語),HTTP首部字段

  

2、HTTP首部字段

  2.1 ?首部介紹

  HTTP首部信息傳遞了重要的信息,是構成HTTP報文的要素。

  

  2.2 HTTP首部字段結構

  首部字段結構

??????   首部字段名:字段值

  另外,字段值對應單個HTTP首部字段可以有多個值,中間用逗號間隔。如

?????   Keep-Alive: timeout=15,max=100

  2.3 HTTP的4種首部字段類型

    通用首部字段:請求報文和響應報文兩方都會使用的首部;

    請求首部字段:從客戶端到服務端發送的請求報文時使用的首部。補充了請求的附加內容,客戶端信息、響應內容相關優先級信息;

    響應首部字段:從服務端到客戶端發送的響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容信息;

    實體首部字段:針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等于實體相關的信息。

  ?? ?

   請求首部字段

  

  響應首部字段

  

  

  2.4 其他首部字段

  端到端首部(end-to-end Header)

?????  ? 分在此類別中的首部會轉發請求/響應對應的最終接收目標,且必須保存在由緩存生成的響應中,另外規定它必須被轉發。

  逐跳首部(Hop-by-hop Header)

??????   分在此類別中的首部只對單次轉發有效,會因通過緩存或代理而不再轉發。逐跳首部字段只對concention,keep-alive,proxy-authenticate,proxy-authorization,trailer,te,transfer-encoding、upgrade這8個首部字段有效,其他的字段都為端到端首部。

3、HTTP通用首部字段

  3.1 cache-control?

  ? ? ?

?

  Cache-Control: 是否能緩存的指令

  3.1.1 ??public、private

  Cache-Control :public:其他用戶也可利用緩存;

  Cache-Control :private:響應只以特定的用戶作為對象;緩存服務器只會對特定用戶提供緩存服務,其他用戶則不會。

  

  3.1.2 no-cache 

  Cache-Control :no-cache:為防止從緩存中返回過期的資源,

  當請求首部中包含no-cache時則表示客戶端將不會接收緩存過的響應,于是,中間的緩存服務器會把客戶端請求轉發給源服務器。

  當響應首部中包含no-cache時則表示緩存服務器不對資源進行緩存。源服務器以后也將不再對緩存服務器請求中的資源進行有效性確認且禁止對其響應資源進行緩存操作。

  Cache-Control :no-cache=Location

?????? 無參數值的首部字段可以使用緩存,有參數值不使用緩存,指定首部字段具體值的方式,只能在響應指令中指定。

  3.1.3?no-store

  Cache-Control:no-store? 控制可執行緩存的對象指令,使用該指令,暗示請求和響應中包含機密信息

?????? no-cache:不緩存過期資源

?????? no-store:不在本地存儲請求和響應的任一部分

  3.1.4?s-maxage

  指定緩存期限和認證的指令

  Cache-Control: s-maxage=604800(單位:秒)

  s-maxage與max-age指令相同,但是不同點是s-maxage指令只適用于供多位用戶使用的公共緩存服務器(一般為代理),也可以說對于向同一用戶重復返回響應的服務器來說,這個指令沒有任何作用。同時,使用此字段后,expires和max-age字段無效。

  3.1.5?max-age

  資源保存為緩存的最長時間 

  Cache-Control: max-age=604800(單位:秒)

?????? 客戶端請求包含該字段:如果請求的資源的緩存時間數值比指定時間數值小,則客戶端直接接受緩存的資源,當max-age為0時,那么緩存服務器把請求轉發給源服務器。

?????? 服務器返回包含該字段:緩存服務器將不對資源進行有效性在確認。

  HTTP/1.1: max-age優先處理,expires忽略;

  HTTP/1.0: expires優先處理,max-age忽略。

  3.1.6 min-fresh

  要求緩存服務器返回至少還未過指定時間的緩存資源

  Cache-Control: min-fresh=60(單位:秒)

  當指定min-fresh為60秒過后,過了60秒的資源都無法作為響應返回。

  3.1.7?max-stale:表示緩存資源,即使過期也照樣接收

  Cache-Control: max-stale =60(單位:秒)

  max-stale未指定參數值,則表示無論經過多久,客戶端都會接收響應;如果指定了具體參數值,那么即使過期,只要仍處于max-stale指定時間內,仍舊會被客戶端接收。

  3.1.8?only-if-cached?

  Cache-Control: only-if-cached

  表示客戶端僅在緩存服務器本地緩存目標資源的情況下才會要求其返回。或者說,如果請求資源緩存服務器上存在,則永遠不再重新加載響應,也不會確定資源有效性,如果不存在,則返回狀態碼504 gateway timeout。

  3.1.9?must-revalidate

  代理會向源服務器再次驗證即將返回的響應緩存目前是否仍然有效

  Cache-Control: must-revalidate

  如果代理無法連通源服務器,則返回504 gateway timeout。

  并且must-revalidate與max-stale沖突,must-revalidate使max-stale無效。

  3.1.10 proxy-revalidate

  要求所有的緩存服務器在接收客戶端帶有該指令的請求返回響應之前,必須再次驗證緩存的有效性

?  ?Cache-Control: proxy-revalidate

  3.1.11 no-transform

  無論在請求還是響應中,緩存都不能改變實體主體的媒體類型,主要為了防止緩存或代理壓縮圖片等操作。

  Cache-Control: no-transform

  3.2 ?connection

  作用:控制不在轉發給代理的首部字段和管理持久連接。

  ??  

  

  ? ? ?

  3.3 ?date 

  三種表示格式,主要是協議版本不同。

  

  

  3.4 ?Prame

  HTTP/1.1之前版本遺留字段,向后兼容,Parame:no-cache,為通用首部字段,只用于客戶端發送的請求中。客戶端要求所有中間服務器不返回緩存的資源。通常情況下Parame:no-cache和Cache-Control :no-cache都在請求中包含。

  

  

  3.5 trailer

  此字段會事先說明在報文主體后記錄了哪些首部字段,該首部字段可應用在HTTP/1,1版本分塊傳輸編碼時。

  

  

  

   

  3.6 ? transfer-encoding?

  傳輸報文主體時采用的編碼方式。HTTP/1.1的傳輸編碼方式僅對分塊傳輸編碼有效。

  

  

  

  3.7?upgrade

  此字段只能作用于相鄰服務器之間,如果相鄰服務器則表示監測HTTP協議及其他協議是否可使用更高的版本進行通信,其參數值可以用來指定一個完全不同的通信協議。

  如果不是相鄰服務器則體現了connection的另一個作用:控制不在轉發給代理的首部字段

?  

  3.8 via

??  此字段用于追蹤客戶端和服務端之間的請求和響應報文的傳輸路徑。

  

  Via :首部是為了追蹤傳輸路徑,所以經常會在TRACE方法一起使用。

  3.9?warning

  HTTP/1.0:Retry-After →→→→HTTP/1.1:Warning

  Warning:【警告碼】【警告主機:端口號】【警告內容】【日期時間】

  

轉載于:https://www.cnblogs.com/tlxf-blog/p/11078366.html

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

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

相關文章

UVA272--TEX Quotes【字符串】

TEX Quotes UVA - 272 題目傳送門 題目大意&#xff1a;將輸入字符串中的所有對雙引號的做雙引號改為 &#xff0c;右雙引號改為 。 解決方法&#xff1a;遍歷一遍及時修改即可。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <…

XMLHttpRequest+WebForm模式(接口IHttpHandler)實現ajax

首先引入ajax.js文件 創建xmlhttpRequest對象 Code//創建XMLHttpRequest對象var xmlHttp;function newXMLHttpRequest() { if (window.XMLHttpRequest) { xmlHttp new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlHttp …

UVA----10082?WERTYU【字符串】

WERTYU UVA - 10082 題目傳送門 題目大意&#xff1a;按照所給的鍵盤樣式&#xff0c;以及錯誤的字符串&#xff0c;輸出正確的字符串&#xff0c;其輸入的每一個字符都按照鍵盤樣式向右錯移了一位。 解決方法&#xff1a;將整個鍵盤用數組存起來&#xff0c;遍歷一遍即可。…

關于C生成的匯編與C++生成的匯編在函數名稱上的差異

最近用到ucos&#xff0c;這個RTOS本身是用C語言和部分匯編編寫&#xff0c;而自己又打算用C來寫應用&#xff0c;在其中遇到幾個問題&#xff0c;一番折騰之后&#xff0c;讓我更加深刻認識到了在一些一般不注意的細節上&#xff0c;C與C的不同。 1、對于ucos&#xff0c;雖…

UVA401????????Palindromes【字符串】

Palindromes UVA - 401 題目傳送門 題目大意&#xff1a;給你一個字符串&#xff0c;判斷其是回文串還是鏡像串。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #…

IIS 5 與IIS 6 原理介紹

[ 轉] ASP.NET Process Model之一&#xff1a;IIS 和 ASP.NET ISAPI 前幾天有一個朋友在MSN上問我“ASP.NET 從最初的接收到Http request到最終生成Response的整個流程到底是怎樣的&#xff1f;”我覺得這個問題涉及到IIS和ASP.NETASP.NET Runtime的處理模型的問題&#xff0c;…

UVA340????????Master-Mind Hints【數組】

Master-Mind Hints UVA - 340 題目傳送門 題目大意&#xff1a;先輸入一個整數n&#xff0c;表示有n個數字&#xff0c;下面第一行代表正確答案&#xff0c;其下每一行代表用戶猜的答案&#xff0c;需統計其有多少數字位置正確&#xff08;A&#xff09;&#xff0c;有多少數…

教你如何把自己從好友的QQ中刪除

在QQ中&#xff0c;有些人看了不太順眼&#xff0c;真不知當初為何讓他加自己為好友的&#xff01; 那有什么辦法&#xff0c;可以把自己從對方的QQ中刪除呢&#xff1f; 其實&#xff0c;用QQ就可以輕松搞定&#xff01; 讓我來為你支一招吧&#xff01; 打開QQ&#xff0…

UVA1583?Digit Generator

Digit Generator UVA - 1583 題目傳送門 題目大意&#xff1a;若x的各位數之和加上x本身等于y&#xff0c;則證明x是y的生成元&#xff0c;求輸入數字n的最小生成元。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> …

C++內存詳解

偉大的Bill Gates 曾經失言&#xff1a; 640K ought to be enough for everybody — Bill Gates 1981 程序員們經常編寫內存管理程序&#xff0c;往往提心吊膽。如果不想觸雷&#xff0c;唯一的解決辦法就是發現所有潛伏的地雷并且排除它們&#xff0c;躲是躲不了的。本文的內…

UVA1584????????Circular Sequence【字符串】

Circular Sequence UVA - 1584 題目傳送門 題目大意&#xff1a;輸入一個環形字符串&#xff0c;需輸出其最小字典序的形式的字符串。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #includ…

UVA1585 Score

Score UVA - 1585 題目傳送門 題目大意&#xff1a;輸入一個字符串&#xff0c;O的分數為1&#xff0c;若出現連續的O&#xff0c;如OOOO...&#xff0c;分數為1,2,3,4...&#xff0c;X為0分&#xff0c;求最終的分數 AC代碼&#xff1a; #include <cstdio> #includ…

operater int()

class Number { int number; public: explicit Number(int n){number n;} operator int() //注意一定不能聲明返回值 { return number; } }; int main () { Number n1 Number(100); int n2 n1; cout << n2 << endl; re…

UVA1586???????? Molar mass

Molar mass UVA - 1586 題目傳送門 題目大意&#xff1a;給你一個只包含C,H,O,N分子式&#xff0c;其中C,H,O,N的原子量分別為&#xff1a;12.01,1.008,16.00,14.01&#xff0c;求其分子量 AC代碼&#xff1a; #include <cstdio> #include <iostream> #includ…

SharePoint v3:忘掉模擬用戶Impersonate,SPSecurity.RunWithElevatedPrivileges來了

回顧&#xff1a; 在SharePoint V2 大家應該都用過模擬用戶Impersonate這個功能&#xff0c; 這個功能用來暫時提升某個用戶的權限&#xff0c;比如某個普通用戶的本來不能修改某個列表的值&#xff0c;但是我們功能需要在修改。 缺點&#xff1a; 我們使用這個模擬用戶功能…

UVA1225????????Digit Counting

Digit Counting UVA - 1225 題目傳送門 題目大意&#xff1a;輸入一個數字T&#xff0c;代表有T組測試數據&#xff0c;下面每行有一個整數n&#xff0c;求將1到n的數字連成一串后每個數字出現的個數。 AC代碼&#xff1a; #include <cstdio> #include <iostream&…

Chess Queen【數學】

Chess Queen UVA - 11538 題目傳送門 題目大意&#xff1a;輸入兩個整數n,m&#xff0c;在n行m列的棋盤中放入白黑兩個棋子&#xff0c;棋子在同一行、同一列或同一對角線上能相互進攻&#xff0c;問有多少種擺放方案。 AC代碼&#xff1a; #include <cstdio> #incl…

Java開發中保證接口的冪等性問題

目錄 1、解決方案 2、使用token保證接口冪等性的例子 3、在實際項目中&#xff0c;如何有效地使用token法來保證接口的冪等性&#xff1f; 4、3示例中如何獲取請求中的 token 5、如果token驗證失敗&#xff0c;如何處理 6、在上述示例代碼中加上token過期后重置的功能 7…

typedef 的四個用途和兩大陷阱

>>>>>用途一&#xff1a;定義一種類型的別名&#xff0c;而不只是簡單的宏替換。可以用作同時聲明指針型的多個對象。比如&#xff1a;char* pa, pb; // 這多數不符合我們的意圖&#xff0c;它只聲明了一個指向字符變量的指針&#xff0c; // 和一個字符變量&am…

Triangle Counting【數學】

Triangle Counting UVA - 11401 題目傳送門 題目大意&#xff1a;輸入一個整數n&#xff0c;求在1到n中選取三條邊能夠組成多少種三角形。 AC代碼&#xff1a; #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #in…