前端最基礎的就是 HTML+CSS+Javascript
。掌握了這三門技術就算入門,但也僅僅是入門,現在前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS
),本着提升技術水平,打牢基礎知識的中心思想,我們開課啦(每週四)。
HTTP 狀態返回碼
HTTP 狀態返回碼用來表示 HTTP 請求是否成功完成。響應被分爲 5 種類型:
- 消息型響應 (1xx)
- 成功響應 (2xx)
- 重定向 (3xx)
- 客戶端錯誤 (4xx)
- 服務器錯誤 (5xx)
HTTP 首部字段 (Headers)
HTTP 消息首部被用來描述資源信息,或者用於描述客戶端和服務器的行爲。HTTP 消息頭允許客戶端和服務器通過 request 和 response 傳遞附加信息。一個請求頭由名稱(不區分大小寫)後跟一個冒號 :,冒號後跟具體的值(不帶換行符)組成。該值前面的引導空白會被忽略。
原始定義在 RFC 4229,也可以在 IANA registry 找到。IANA 同時也維護着一份 registry of proposed new HTTP message headers。自定義的專有首部可以加上 X-
前綴。
根據不同上下文分類
根據不同上下文,可將消息頭分爲:
- 一般頭: 同時適用於請求和響應消息,但與最終消息主體中傳輸的數據無關的消息頭。
- 請求頭: 包含更多有關要獲取的資源或客戶端本身信息的消息頭。
- 響應頭: 包含有關響應的補充信息,如其位置或服務器本身(名稱和版本等)的消息頭。
- 實體頭: 包含有關實體主體的更多信息,比如主體長度( Content-Length ) 或其 MIME類型。
根據代理對其的處理方式分類
端到端消息頭
這類消息頭必須被傳輸到最終的消息接收者,也即,請求的服務器或響應的客戶端。中間的代理服務器必須轉發未經修改的端到端消息頭,並且必須緩存它們。
逐跳消息頭
這類消息頭僅對單次傳輸連接有意義,不能通過代理或緩存進行重新轉發。這些消息頭包括 Connection
, Keep-Alive
, Proxy-Authenticate
, Proxy-Authorization
, TE
, Trailer
, Transfer-Encoding
及 Upgrade
。注意,只能使用 Connection
來設置逐跳一般頭。
常用
-
緩存相關
-
ETag
是資源的特定版本的標識符。這可以讓緩存更高效,並節省帶寬,因爲如果內容沒有改變,Web服務器不需要發送完整的響應。而如果內容發生了變化,使用ETag有助於防止資源的同時更新相互覆蓋(“空中碰撞”)。
如果給定URL中的資源更改,則一定要生成新的Etag值。 因此Etags類似於指紋,也可能被某些服務器用於跟蹤。 比較etags能快速確定此資源是否變化,但也可能被跟蹤服務器永久存留。ETag
屬性之間的比較採用的是弱比較算法,即兩個文件除了每個比特都相同外,內容一致也可以認爲是相同的。例如,如果兩個頁面僅僅在頁腳的生成時間有所不同,就可以認爲二者是相同的。 -
If-None-Match
是一個條件式請求首部。對於 GET 和 HEAD 請求方法來說,當且僅當服務器上沒有任何資源的 ETag 屬性值與這個首部中列出的相匹配的時候,服務器端會才返回所請求的資源,響應碼爲 200 。對於其他方法來說,當且僅當最終確認沒有已存在的資源的 ETag 屬性值與這個首部中所列出的相匹配的時候,纔會對請求進行相應的處理。 -
If-Modified-Since
是一個條件式請求首部,服務器只在所請求的資源在給定的日期時間之後對內容進行過修改的情況下才會將資源返回,狀態碼爲 200 。如果請求的資源從那時起未經修改,那麼返回一個不帶有消息主體的 304 響應,而在Last-Modified
首部中會帶有上次修改時間。
不同於If-Unmodified-Since
,If-Modified-Since
只可以用在 GET 或 HEAD 請求中。當與If-None-Match
一同出現時,它(If-Modified-Since)會被忽略掉,除非服務器不支持If-None-Match
。
最常見的應用場景是來更新沒有特定 ETag 標籤的緩存實體。 -
Cache-Control
通用消息頭字段,被用於在http請求和響應中,通過指定指令來實現緩存機制。緩存指令是單向的,這意味着在請求中設置的指令,不一定被包含在響應中。 -
Pragma
在 HTTP/1.0 中規定的通用首部,這個首部的效果依賴於不同的實現,所以在“請求-響應”鏈中可能會有不同的效果。它用來向後兼容只支持 HTTP/1.0 協議的緩存服務器,那時候 HTTP/1.1 協議中的 Cache-Control 還沒有出來。 -
Last-Modified
是一個響應首部,其中包含源頭服務器認定的資源做出修改的日期及時間。 它通常被用作一個驗證器來判斷接收到的或者存儲的資源是否彼此一致。
由於精確度比 ETag 要低,所以這是一個備用機制。
包含有If-Modified-Since
或If-Unmodified-Since
首部的條件請求會使用這個字段。 -
Expires
包含日期/時間, 即在此時候之後,響應過期。
無效的日期,比如 0, 代表着過去的日期,即該資源已經過期。
如果在Cache-Control
響應頭設置了 "max-age" 或者 "s-max-age" 指令,那麼Expires
頭會被忽略。
-
-
安全相關
-
Strict-Transport-Security
HSTS是一個安全功能,它告訴瀏覽器只能通過HTTPS訪問當前資源,而不是HTTP。 -
Content-Security-Policy
內容安全策略(CSP) 是一個額外的安全層,用於檢測並削弱某些特定類型的攻擊,包括跨站腳本 (XSS) 和數據注入攻擊等。無論是數據盜取、網站內容污染還是散發惡意軟件,這些攻擊都是主要的手段。 -
Authorization
驗證用戶代理身份的憑證,通常會在服務器返回401 Unauthorized
狀態碼以及WWW-Authenticate
消息頭之後在後續請求中發送此消息頭。
-
-
資源相關
-
Content-Type
用於指示資源的MIME
類型media type
。- text/plain
- application/json
{"a":1}
- application/x-www-form-urlencoded
a=1&b=2
-
multipart/form-data
POST /foo HTTP/1.1 Content-Length: 68137 Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575 ---------------------------974767299852498929531610575 Content-Disposition: form-data; name="description" some text ---------------------------974767299852498929531610575 Content-Disposition: form-data; name="myFile"; filename="foo.txt" Content-Type: text/plain (content of the uploaded file foo.txt) ---------------------------974767299852498929531610575
-
HTTP 首部字段詳解
Cache-Control
控制緩存的行爲,多個指令之間通過逗號分隔,如Cache-Control: private, max-age=0, no-cache
。
請求指令:
-
no-cache
,防止接收過期的資源,指示代理服務器(緩存服務器)每次都向源服務器確認資源的有效期。 -
no-store
, 不緩存該請求的任一部分,暗示請求中包含機密信息。 -
max-age=[秒]
, 參數值必須,如果緩存資源的時長比該值小則接收緩存的資源,http/1.1
版本的服務器會優先處理max-age
而忽略Expires
,http/1.0 版本服務器則相反。 -
max-stale(=[秒])
,即使緩存資源已過期,只要在指定時間內則接收響應資源,不指定參數值的話表示不論過了多久都接收響應。 -
min-fresh=[秒]
,參數值必須,指定服務器返回還未過指定時間的緩存資源。 -
no-transform
,緩存不能改變主體的媒體類型,防止代理壓縮圖片等操作。 -
only-if-cached
, 只請求緩存服務器上的緩存資源,不對緩存資源有效期確認,如果緩存服務器的本地緩存無響應則返回狀態碼504 Gateway Timeout
。
響應指令:
-
private
, 指示代理服務器(緩存服務器)只對特定用戶提供資源緩存服務。 -
public
, 所有用戶都可以使用緩存。 -
no-cache(=[value])
, 參數值可選,當指定參數值後指示緩存服務器不再對資源進行緩存,如Cache-Control: no-cache=Location
。 -
no-store
, 不緩存該響應的任一部分,暗示響應中包含機密信息。 -
no-transform
, 緩存不能改變主體的媒體類型,防止代理壓縮圖片等操作。 -
must-revalidate
, 指示代理服務器在返回響應的緩存資源前向源服務器驗證該緩存目前是否有效,如果代理無法連接源服務器的話會返回504 Gateway Timeout
狀態碼,使用該指令會忽略請求的max-stale
指令。 -
proxy-revalidate
,指示代理服務器對緩存資源的有效性進行確認。 -
max-age=[秒]
, 參數值必須,指示緩存服務器在該時間內不必再向源服務器確認緩存資源的有效性。 -
s-maxage=[秒]
, 參數值必須,與max-age
功能相同,不同的是該指令只適用於供多位用戶使用的公共緩存服務器,使用該指令後會忽略對Expires
首部字段及max-age
指令的處理。
另外,可以使用自定義的指令,但這種擴展的指令僅對能理解它的代理服務器有意義。如下的community
指令,Cache-Control
本身沒有這個指令,如果緩存服務器不能理解這個指令,則會忽略它:Cache-Control: private, community="UCI"
Connection
管理持久連接和控制不再轉發的首部字段。如當服務器想明確斷開連接的時候發送 Connection: close
,在http/1.1之前版本協議上使用持久連接的話客戶端發送 Connection: Keep-Alive
(服務端會返回包含Connection和Keep-Alive首部字段的響應)。Connection: Upgrade
則是指示不再轉發Upgrade首部。
Date
表明創建 http 報文的日期時間,如 date: Tue, 27 Aug 2019 07:25:02 GMT
。
Pragma
http/1.1
之前版本的遺留字段,只用在客戶端發送的請求中,要求所有的中間服務器不返回緩存的資源:Pragma: no-cache
。如果所有的中間服務器都使用 http/1.1 版本的話則應直接使用 Cache-Control: no-cache
。
Trailer
指示在報文主體之後記錄了那些首部字段,Trailer 用在 http/1.1 響應首部中允許發送方在分塊發送的消息後面添加額外的元信息,如:
Transfer-Encoding
設置傳輸報文主體時的編碼方式爲分塊編碼傳輸:Transfer-Encoding: chunked
。
默認情況下,HTTP 的響應消息體是作爲整包發送到客戶端的,用頭Content-Length
來表示消息體的長度, 這個長度對客戶端非常重要,因爲對於持久連接TCP並不會在請求完立馬結束,而是可以發送多次請求/響應,客戶端需要知道哪個位置纔是響應消息的結束,以及後續響應的開始,因此Content-Length顯得尤爲重要,服務端必須精確地告訴客戶端消息體的長度是多少。
如果Content-Length
比實際返回的長度短,那麼就會造成內容截斷。
如果比實體內容長,客戶端就一直處於pendding
狀態,直到所有的消息體都返回了請求才結束。
分塊編碼傳輸是另一種解決方案:它把數據分解成一系列數據塊,並以多個塊發送給客戶端,服務器發送數據時不再需要預先告訴客戶端發送內容的總大小,只需在響應頭裏面添加Transfer-Encoding: chunked
,以此來告訴瀏覽器使用的是分塊傳輸編碼,這樣就不需要Content-Length
。
這就是分塊傳輸編碼Transfer-Encoding
的作用。
HTTP 1.1引入分塊傳輸編碼提供了以下幾點好處:
- HTTP分塊傳輸編碼允許服務器爲動態生成的內容維持HTTP持久連接。通常,持久鏈接需要服務器在開始發送消息體前發送
Content-Length
消息頭字段,但是對於動態生成的內容來說,在內容創建完之前是不可知的。(動態內容,content-length無法預知) - 分塊傳輸編碼允許服務器在最後發送消息頭字段。對於那些頭字段值在內容被生成之前無法知道的情形非常重要,例如消息的內容要使用散列進行簽名,散列的結果通過HTTP消息頭字段進行傳輸。沒有分塊傳輸編碼時,服務器必須緩衝內容直到完成後計算頭字段的值並在發送內容前發送這些頭字段的值。
- HTTP服務器有時使用壓縮 (gzip或deflate)以縮短傳輸花費的時間。分塊傳輸編碼可以用來分隔壓縮對象的多個部分。在這種情況下,塊不是分別壓縮的,而是整個負載進行壓縮,壓縮的輸出使用本文描述的方案進行分塊傳輸。在壓縮的情形中,分塊編碼有利於一邊進行壓縮一邊發送數據,而不是先完成壓縮過程以得知壓縮後數據的大小。(gzip壓縮,壓縮與傳輸同時進行)
Upgrade
檢測能否使用更高版本的協議進行通信,因爲Upgrade
僅限於客戶端和鄰接服務器之間,所以還需要額外指定Connection: Upgrade
WebSocket
是建立在Http
基礎上的協議,因此,連接的發送方仍是客戶端,確立WebSocket
通信連接後服務端可以不必等待請求而直接向客戶端推送數據,而且WebSocket
是一直保持連接狀態,首部信息量比Http
要小。
爲了實現WebSocket
通信,需要在HTTP連接建立後完成一次握手步驟:
- 通過使用HTTP的Upgrade首部字段,
Upgrade
用來告訴服務器通信協議發生改變,Sec-WebSocket-Key
字段內記錄着握手過程中必不可少的鍵值,Sec-WebSocket-Protocol
字段內記錄使用的子協議。 - 對於客戶端的握手請求,服務器返回狀態碼
101 Switching Protocols
響應,Sec-WebSocket-Accept
字段值是由握手請求中的Sec-WebSocket-Key
的字段值生成的。 - 成功握手確立
WebSocket
連接之後,通信不再使用Http
的數據幀,而採用WebSocket
的數據幀。JavaScript
可以調用"The WebSocket API
"(W3C標準制定)內提供的WebSocket
程序接口,以實現WebSocket
下的全雙工通信。
Via
報文在經過代理或網關時,會在首部字段Via中附加該服務器的信息(使用的http版本等),Via首部是爲了追蹤傳輸路徑,其經常和TRACE方法一起使用,比如代理服務器收到由TRACE方法發送過來的請求,當Max-Forwards: 0時代理服務器不再轉發該請求,這時代理服務器將自身信息寫入Via首部後返回該請求的響應。
Warning
該首部通常告知用戶一些與代理緩存相關的問題的警告,Warning首部的格式及警告碼內容如下:
語法:Warning: <warn-code> <warn-agent> <warn-text> [<warn-date>]
示例:Warning: 110 - "Response is stale"
-
<warn-code>
三位數字警告碼。第一位數字表示 Warning 信息在驗證之後是否需要從已存儲的響應中刪除。
1xx 警告碼描述了關於當前響應的新鮮度或者驗證狀態的警告信息,並且將會在驗證之後被緩存服務器刪除。
2xx 警告碼描述了驗證之後不會被修復的某些展現內容方面的警告信息,並且在驗證之後不會被緩存服務器刪除。碼值 文字描述 詳細說明 110 Response is Stale 由緩存服務器提供的響應已過期(設置的失效時間已過)。 111 Revalidation Failed 由於無法訪問服務器,響應驗證失敗。 112 Disconnected Operation 緩存服務器斷開連接。 113 Heuristic Expiration 如果緩存服務器採用啓發式方法,將緩存的有效時間設定爲24小時,而在該響應的年齡超過24小時時發送。 199 Miscellaneous Warning 任意的、未明確指定的警告信息。 214 Transformation Applied 由代理服務器添加,如果它對返回的展現內容進行了任何轉換,比如改變了內容編碼、媒體類型等。 299 Miscellaneous Warning 與199類似,只不過指代的是持久化警告。 - <warn-agent>
添加到 Warning 首部的服務器或者軟件的名稱或者僞名稱(當代理不可知的時候可以用 "-" 代替)。 - <warn-text>
用來描述錯誤信息的警告文本。 - <warn-date>
可選。假如多個 Warning 被髮送,那麼需包含一個與 Date 首部相對應的日期字段。
Content-Security-Policy
告訴用戶代理在一個頁面上可以加載使用的資源。
內容安全策略 (CSP) 是一個額外的安全層,用於檢測並削弱某些特定類型的攻擊,包括跨站腳本 (XSS) 和數據注入攻擊等。
除此之外,html文件中設置 <meta>
標籤也可以配置該策略, 如<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
Accept
用戶期望的 MIME類型。告訴服務器,用戶能處理的媒體類型及其優先級。
如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
。其中q用來指示優先級,使用分號;與媒體類型隔開,q的值從0.0到1.0,默認爲1.0:
Accept-Charset
用戶支持的字符集。告訴服務器,用戶支持的字符集及字符集的優先級。
如Accept-Charset: iso-8859-5, unicode-1-1;q=0.8。
Accept-Encoding
用戶支持的壓縮方法。告訴服務器,用戶支持的內容編碼及編碼的優先級。
如Accept-Encoding: gzip, deflate, br
。
常見的內容編碼有 gzip
、compress
、deflate
、identity
(不執行壓縮的默認編碼格式),另外除了可以使用q來指定優先級外也可以使用通配符*來指定任意的編碼格式。
Accept-Language
用戶期望的自然語言。告訴服務器,用戶支持的自然語言集及其優先級。
如Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,und;q=0.7
。
Accept-Ranges
範圍請求可不可以被處理,Accept-Ranges: none
表示不能處理範圍請求,Accept-Ranges: bytes
表示可以處理範圍請求。
Authorization
用戶憑證。告訴服務器,用戶代理的認證信息(證書值)。
HTTP協議中的 Authorization
請求消息頭含有服務器用於驗證用戶代理身份的憑證,通常會在服務器返回 401 Unauthorized
狀態碼以及WWW-Authenticate
消息頭之後在後續請求中發送此消息頭。
Expect
客戶端發送Expect:100-Continue
握手的目的,是爲了在客戶端在發送請求內容之前,判斷源服務器是否願意接受請求(基於請求頭部)。 xpect:100-Continue
握手需謹慎使用,因爲遇到不支持HTTP/1.1協議的服務器或者代理時會引起問題。
From
告知服務器使用用戶代理的用戶的電子郵箱地址。
Host
虛擬主機運行在同一個IP上,使用Host
加以區分,如Host: www.lilnong.top
。Host
首部字段是HTTP/1.1
中唯一一個必須包含在請求內的首部字段,如果服務器未設定主機名則Host
值爲空即可。
If-Match
只有當If-Match
的字段值跟請求資源的ETag值匹配時服務器才接受請求(這時的服務器無法使用弱ETag值),否則返回狀態碼412 Precondition Failed
響應:
-
If-None-Match
, 只有當If-Match的字段值跟請求資源的ETag值不匹配時服務器才接受請求,利用它可以獲取最新的資源。 -
If-Modified-Since
,請求的資源在指定日期後發生了更新服務器才接受請求,否則返回304 Not Modified
(首部字段Last-Modified
可以獲取資源的更新日期),其作用與If-Match類似。 -
If-Unmodified-Since
, 請求的資源在指定日期後未發生更新服務器才接受請求,否則返回412 Precondition Failed
響應。 -
If-Range、Range
, 請求的資源指定的ETag
值或時間匹配時則可作爲範圍請求處理,否則返回全部資源。
Max-Forwards
通過TRACE
或OPTIONS
方法發送包含首部字段Max-Forwards
的請求時,可以指定經過的服務器最大數目,當服務器收到收到值爲0的請求時不再進行轉發,直接返回響應,對此我們可以確定那臺終點服務器的通信狀態
Proxy-Authorization
接收到從代理服務器發來的認證質詢時,客戶端會發送包含該首部字段的請求,以告知認證所需要的信息,客戶端與服務器之間的認證則使用首部字段Authorization。
Referer
告知服務器請求的原始資源的URI,告訴服務器我是從哪個頁面鏈接過來的,服務器藉此可以獲得一些信息用於處理,比如從我主頁上鍊接到一個朋友那裏,他的服務器就能夠從HTTP Refere
r中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。
TE
告知服務器客戶端能夠處理響應的傳輸編碼方式及相對優先級,與Accept-Encoding
相像,但是用於傳輸編碼。
User-Agent
傳達瀏覽器或代理服務器的種類或名稱,由網絡爬蟲發起請求時,有可能在該字段內添加爬蟲作者的電子郵件地址。
Age
告知客戶端資源緩存的時間,如Age: 600表示資源距上次請求已經過了600秒,代理創建響應時必須加上該首部字段。
ETag
告知客戶端實體標識,ETag值是服務器給每個資源分配的唯一性標識,如ETag: "82e323200c392ff89323acd12"
,當資源更新後其ETag值也會變化,如下。
強ETag值是指實體發生細微變化就會改變ETag值。
弱ETag值只有當資源發生根本改變產生差異時纔會更新,弱ETag值會在字段值前加一個"W/"
,如ETag: W/usagi-1234
。
Location
提示瀏覽器重定向到另一個URI位置,該字段一般會配合3xx: Redirection的響應
Proxy-Authenticate
將代理服務器所要求的認證信息發送給客戶端,如Proxy-Authenticate: Basic realm="Usagidesign Auth"
。服務器與客戶端之間進行認證時,首部字段WWW-Authorization
有着相同的作用。
Retry-After
告訴客戶端在指定的秒數後或指定的時間(GMT格式)再次發起請求,主要配合狀態碼503 Service Unavailable
響應或3xx Redirect
響應使用。
Server
告知客戶端http服務器信息,如Server: Apache/2.2.6
。
Vary
對緩存進行控制,源服務器會向代理服務器傳達關於本地緩存使用方法的命令。
WWW-Authorization
通知客戶端適用於請求URI所指定資源的認證方案(Basic或Digest)和帶參數提示的質詢,狀態碼401 Unauthorized
響應中肯定帶有該首部字段,如WWW-Authorization: Basic realm="Usagidesign Auth"
。
Allow
當服務器收到不支持的方法請求時,會返回405 Method Not Found
,並將其支持的方法寫入到Allow首部字段中,如Allow: GET, HEAD
。
Content
-
Content-Encoding
告知客戶端服務器對實體主體部分選用的內容編碼方式,如Content-Encoding: gzip
。 -
Content-Language
, 告知客戶端實體主體使用的語言,如Content-Language: zh-CN
。 -
Content-Length
, 實體主體部分的大小(字節),對實體主體進行內容編碼傳輸時,不能使用該首部字段。 -
Content-Location
, 指定報文主體返回資源對應的URI,比如,當返回的內容頁面與實際請求的對象不同時,在該首部字段內寫入URI。 -
Content-MD5
,報文主體的MD5值,使用Base64編碼。 -
Content-Range
, 針對範圍請求,告知客戶端返回的實體的範圍及整個實體的大小,如:Content-Range: bytes 5001-10000/10000
。 -
Content-Type
。
用於描述服務器文檔的 MIME類型。幫助用戶代理(瀏覽器)去處理接收到的數據。
實體主體內對象的媒體類型,和首部字段Accept
一樣採用type/subtype
形式,如Content-Type: text/html; charset=UTF-8
。
Expires
告知客戶端或緩存服務器資源失效時間,超出該時間後緩存服務器應該從源服務器獲取該資源,如Expires: Wed, 23 May 2012 09:59:55 GMT
。源服務器不希望緩存服務器緩存的時候可以將該字段寫入與Date相同的時間值。
Last-Modified
指明資源最終修改的時間,如Last-Modified: Wed, 23 May 2012 09:59:55 GMT
。
Cookie、Set-Cookie
Cookie
是由服務器端生成,發送給瀏覽器,將Cookie
的key/value
保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie
給服務器。Set-Cookie
屬於響應首部字段,包含了狀態管理所使用的Cookie
信息。Cookie
屬於請求首部字段,用來通知服務端當前頁面的域生效中的cookie
。
Set-Cookie
字段的屬性必須包含賦予cookie
的名稱和值,其它屬性有:
-
expires
,cookie的有效期,不指定的話則默認爲瀏覽器關閉爲止,如果設置一個過去的時間,瀏覽器會立即刪除該cookie。 -
path
,將服務器上指定文件目錄作爲cookie的適用對象,若不指定則默認爲文檔所在的文件目錄。 -
domain
,作爲cookie適用對象的域名(結尾匹配,比如指定lilnong.top後,除lilnong.top外,www.lilnong.top和www2.lilnong.top都可以發送Cookie),若不指定則默認爲創建cookie的服務器的域名。 -
secure
,僅在https通信下才會發送cookie,指定secure屬性的方式如:Set-Cookie: name=value, secure
。 -
HttpOnly
,使JavaScript腳本無法獲得cookie,其主要目的是爲防止跨站腳本攻擊(XSS)對cookie信息的竊取。
Content-Dispositison
用來指示如何顯示附加的文件,即設置Content-Disposition
告訴瀏覽器下載文件的名稱和是否在瀏覽器中內嵌顯示,如:
-
Content-disposition: inline; filename=1502849449726.jpg
表示瀏覽器內嵌顯示一個文件。 -
Content-disposition: attachment; filename=1502849449726.xlsx
表示彈出下載提示對話框來下載文件。
X-Frame-Options
屬於http響應首部,用來控制網站內容在其它web網站的Frame標籤內的顯示,其主要目的是爲了防止點擊劫持(clickjacking)攻擊,如將其設爲字段值DENY的話就是拒絕,頁面不能被嵌入到任何iframe或frame中,SAMEORIGIN則爲頁面只能被本站頁面嵌入到iframe或者frame中(比如當指定http://hackr.jp/sample.html
頁面爲SAMEORIGIN
時,hackr.jp上所有頁面的frame都被允許可加載該頁面,其它域名的頁面就不行),ALLOW-FROM:頁面允許frame或frame加載。
微信公衆號:前端linong