Web資源訪問及HTTP協議詳解

2021-08-26 16:13:32 字數 3663 閱讀 7015

下圖為在瀏覽器中輸入url 後的一系列過程:

從此圖中可以總結出幾條結論:

1. 如果dns伺服器壞了,可以直接通過ip位址訪問網頁,因為dns只是乙個網域名稱和ip位址的map;

通過在命令列中輸入 「ping 網域名稱」即可;

比如:在命令列中輸入 ping www.baidu.com ,則出現如下文字:

可以看出 www.baidu.com的ip位址是119.75.217.56 ;

直接在瀏覽器中輸入 119.75.217.56 即可訪問baidu;

2.host檔案位於 c:\windows\system32\drivers\etc\hosts

在此檔案中修改對映關係可以改變訪問的效果,比如在檔案中新增:

127.0.0.1 www.sina.com

則開啟tomcat;

在瀏覽器中輸入 可以看到tomcat的主頁;

因為在訪問dns伺服器之前ie會去訪問 hosts檔案,如果存在對映關係,則不會去訪問dns伺服器;

3.訪問靜態資源之前其實會訪問預設servlet,如果自己覆蓋預設的servlet,則不能正常訪問到靜態資源;

覆蓋預設servlet只需要/

>即可;

4.傳送http請求的前提是連線伺服器;

http協議時平台無關的;

http由http請求和http響應組成;

一般的http請求如下:

請求行是由 請求方式、請求資源、請求協議組成;

1.1.1請求方式

請求方式主要有get和post兩種;

除了表單提交,其他都是get請求;

一共有八種請求方式:

請求方式

作用get

用於請求某個資源,理論上不修改伺服器的狀態

post

表單提交

head

只返回get請求後相應的頭,而不用吧相應體(html)返回

trace

顯示伺服器端接收的資訊,用於除錯

put將包含的資訊放在url中

delete

指明要刪除某個url對應的資源

options

列出http方法列表

connect

建立隧道

冪等:一次請求和多次請求的結果是一樣的;

在請求方式中,滿足冪等的有:head、get、put;其餘的都不是冪等;

1.1.2請求資源

請求資源是要請求返回的web資源;

1.1.3請求協議

請求協議現在一般使用http/1.1,以前使用http/1.0

注意:http/1.1和http/1.0的區別

http是基於tcp/ip

之上的,http/1.0是指連線web伺服器後只允許一次http請求;http/1.1是指連線web伺服器後允許多次http請求;

請求頭是由很多map組成;

host

客戶機向伺服器傳送請求的主機名

accept

客戶機支援的資料型別

accept-language

客戶機支援的語言

tips:在訪問www.google.com時伺服器會解析出客戶機支援的語言,然後發回此語言的網頁;

accept-charset

客戶機支援的編碼

accept-encoding

客戶機的壓縮格式

referer

用途:防盜煉

user-agent

客戶機的軟體環境

connection

客戶機傳送此連線後的連線狀態時繼續連線還是斷開

date

客戶機傳送的時間

注意:請求頭和實際內容中間需要加上空行;

2.2.1 狀態碼

100-199

伺服器成功接收客戶請求,不過需要讓客戶機繼續傳送請求完成整個請求過程

200-299

200 成功處理

300-399

302 : 找別人,在響應頭中需要有location屬性; 304、307:找快取,即快取中存在頁面

400-499

403:存在頁面,但是使用者沒有許可權訪問; 404:無此頁面

500-599

500 : 伺服器內部錯誤

server

伺服器資訊

content-length

響應內容的長度

content-encoding

伺服器內容的壓縮格式

content-type

伺服器內容的格式,比如text/html ; image/jpeg

location

用於狀態碼為302,表示別人的位址

content-disposition

transfer-encoding

以塊傳輸還是以位元組傳輸

date

時間refresh

定時重新整理或重定向

last-modified

最後改變的時間

expires

-1或0 表示無快取

etag

每個web資源都有乙個標示符,只要web資源內容改動,標示符就會改變;

應用1:location重定向

應用2:content-encoding 壓縮資料

response.setheader("content-encoding","gzip"); bytearrayoutputstream bout = new bytearrayoutputstream(); gzipoutputstream out = new gzipoutputstream(bout); out.write("hello".getbytes()); out.close(); byte b = bout.tobytearray(); response.getoutputstream().write(b);

電信對於**的收費是按照出口流量收費的,因此需要壓縮資料,減少費用;

應用3:content-disposition

應用4:refresh

response.setheader("refresh","3"); 定時更新 用於實時軟體

response.setheader("refresh","3;url='http://localhost:8080/1.html'"); 註冊登入

應用5:content-type返回的資料型別;

Web前端 HTTP協議

目錄2 post請求 三 http響應報文 http hypertext transport protocol 即超文字傳輸協議。這個協議詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則。http就是乙個通訊規則,通訊規則規定了客戶端傳送給伺服器的內容格式,也規定了伺服器傳送給客戶端的內容格式。...

web開發 Http協議基礎

一 http0.9版 http 是基於 tcp ip 協議的應用層協議 它不涉及資料報 packet 傳輸,主要規定了客戶端和伺服器之間的通訊格式,預設使用80埠。最早版本是1991年發布的0.9版。該版本極其簡單,只有乙個命令get。get index.html 上面命令表示,tcp 連線 con...

Web應用和HTTP協議

1 http協議 由兩部分程式實現 乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換http訊息進行會話。http定義了瀏覽器和web伺服器之間的訊息格式以及客戶機和伺服器是如何進行訊息交換的。2 http使用tcp而不是udp作為它的傳輸層協議。瀏覽器發起乙個與伺服器的tcp連線...