看完讓你有一種恍然大悟醍醐灌頂的感覺 http服務器是什么?( 九 )


Server
服務器標頭包含有關原始服務器用來處理請求的軟件的信息 。
應該避免使用過于冗長和詳細的 Server 值,因為它們可能會泄露內部實施細節,這可能會使攻擊者容易地發現并利用已知的安全漏洞 。 例如下面這種寫法
Server: Apache/2.4.1 (Unix)Set-Cookie
Cookie 又是另外一個領域的內容了,我們后面文章會說道 Cookie,這里需要記住 Cookie、Set-Cookie 和 Content-Disposition 等在其他 RFC 中定義的首部字段,它們不是屬于 HTTP 1.1 的首部字段,但是使用率仍然很高 。
Transfer-Encoding
首部字段 Transfer-Encoding 規定了傳輸報文主體時采用的編碼方式 。
Transfer-Encoding: chunkedHTTP /1.1 的傳輸編碼方式僅對分塊傳輸編碼有效 。
X-Frame-Options
HTTP 首部字段是可以自行擴展的 。 所以在 Web 服務器和瀏覽器的應用上,會出現各種非標準的首部字段 。
首部字段 X-Frame-Options 屬于 HTTP 響應首部,用于控制網站內容在其他 Web 網站的 Frame 標簽內的顯示問題 。 其主要目的是為了防止點擊劫持(clickjacking)攻擊 。
下面是一個響應頭的匯總,基于 HTTP 1.1

看完讓你有一種恍然大悟醍醐灌頂的感覺 http服務器是什么?

文章插圖
非 HTTP/1.1 首部字段在 HTTP 協議通信交互中使用到的首部字段,不限于 RFC2616 中定義的 47 種首部字段 。 還有 Cookie、Set-Cookie 和 Content-Disposition 等在其他 RFC 中定義的首部字段,它們的使用頻率也很高 。 這些非正式的首部字段統一歸納在 RFC4229 HTTP Header Field Registrations 中 。
End-to-end 首部和 Hop-by-hop 首部HTTP 首部字段將定義成緩存代理和非緩存代理的行為,分成 2 種類型 。
一種是 End-to-end 首部 和 Hop-by-hop 首部
End-to-end(端到端) 首部這些標頭必須發送給消息的最終接收者 : 請求的服務器,或響應的客戶端 。 中間代理必須重新傳輸未經修改的標頭,并且緩存必須存儲這些信息
Hop-by-hop(逐跳) 首部分在此類別中的首部只對單次轉發有效,會因通過緩存或代理而不再轉發 。
下面列舉了 HTTP/1.1 中的逐跳首部字段 。 除這 8 個首部字段之外,其他所有字段都屬于端到端首部 。
Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade
HTTP 的優點和缺點HTTP 的優點簡單靈活易擴展HTTP 最重要也是最突出的優點是 簡單、靈活、易于擴展 。
HTTP 的協議比較簡單,它的主要組成就是 header + body,頭部信息也是簡單的文本格式,而且 HTTP 的請求報文根據英文也能猜出來個大概的意思,降低學習門檻,能夠讓更多的人研究和開發 HTTP 應用 。
所以,在簡單的基礎上,HTTP 協議又多了靈活 和 易擴展 的優點 。
HTTP 協議里的請求方法、URI、狀態碼、原因短語、頭字段等每一個核心組成要素都沒有被制定死,允許開發者任意定制、擴充或解釋,給予了瀏覽器和服務器最大程度的信任和自由 。
應用廣泛、環境成熟因為過于簡單,普及,因此應用很廣泛 。 因為 HTTP 協議本身不屬于一種語言,它并不限定某種編程語言或者操作系統,所以天然具有跨語言、跨平臺的優越性 。 而且,因為本身的簡單特性很容易實現,所以幾乎所有的編程語言都有 HTTP 調用庫和外圍的開發測試工具 。
隨著移動互聯網的發展, HTTP 的觸角已經延伸到了世界的每一個角落,從簡單的 Web 頁面到復雜的 JSON、XML 數據,從臺式機上的瀏覽器到手機上的各種 APP、新聞、論壇、購物、手機游戲,你很難找到一個沒有使用 HTTP 的地方 。
無狀態無狀態其實既是優點又是缺點 。 因為服務器沒有記憶能力,所以就不需要額外的資源來記錄狀態信息,不僅實現上會簡單一些,而且還能減輕服務器的負擔,能夠把更多的 CPU 和內存用來對外提供服務 。
HTTP 的缺點無狀態既然服務器沒有記憶能力,它就無法支持需要連續多個步驟的事務操作 。 每次都得問一遍身份信息,不僅麻煩,而且還增加了不必要的數據傳輸量 。 由此出現了 Cookie 技術 。
明文HTTP 協議里還有一把優缺點一體的雙刃劍,就是明文傳輸 。 明文意思就是協議里的報文(準確地說是 header 部分)不使用二進制數據,而是用簡單可閱讀的文本形式 。
對比 TCP、UDP 這樣的二進制協議,它的優點顯而易見,不需要借助任何外部工具,用瀏覽器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,為我們的開發調試工作帶來極大的便利 。

推薦閱讀