下圖為在瀏覽器中輸入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連線...