http是超文本傳輸協議,是TCP/IP協議族中最重要的協議之一
以APACHE+PHP爲例,一次訪問頁面大概過程是:
1、用瀏覽器去訪問一個http頁面或其他資源
2、先去解析url中的域名或ip地址,再去查找本地的hosts文件中的域名和對應的Ip,如果在hosts文件有對應的項,就會向對應的IP地址發送請求,如果沒有再去DNS查找域名對應的IP地址,再去發送請求
3、去嘗試與服務器連接,查看是否連通
4、再去請求http頁面或其他資源,
5、服務器端的apache,根據地址去查找相應的資源,如果是PHP文件,會先將PHP文件交給PHP模塊去處理,將處理後的結果返回給apache
6、apache再將靜態的頁面傳給客戶端瀏覽器,
7、瀏覽器再根據返回的結果顯示爲對應的頁面
一個HTML頁面
<h1>http</h1>
<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />
<img src="http://www.baidu.com/img/baidu_sylogo1.gif" />
<img src="ogo1.gif" />
會有3個請求,1、HTML頁面文件,2、http://www.baidu.com/img/baidu_sylogo1.gif,3、ogo1.gif
ogo1.gif對應的頭信息
Request URL:http://localhost/test/ogo1.gif 請求地址
Request Method:GET 請求方式
Status Code:404 Not Found 狀態代碼 404 表示沒有找到
Request Headers 爲請求報頭
GET/test/ogo1.gif HTTP/1.1 請求方式get 資源 協議
Host: localhost 主機地址、端口,端口默認爲80
Connection: keep-alive連接方式
Cache-Control: max-age=0 表示經過0s會失效
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, likeGecko) Chrome/18.0.1025.142 Safari/535.19 客戶端信息
Accept: */* 收的文件類型
Referer: http://localhost/test/http.html 表示請求這個資源的來源地址,可以根據它來設置防盜鏈
Accept-Encoding: gzip,deflate,sdch 接收的數據壓縮格式
Accept-Language: zh-CN,zh;q=0.8 接收的語言
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 接收的字符集
Cookie: PHPSESSID=435f8c621a055d8ec31d5b8b2a82322b Cookie信息
Response Headers 爲響應報頭
HTTP/1.1 404 Not http協議 404 表示沒有找到
FoundDate: Thu, 05 Apr 2012 06:18:31 GMT 查找時間
Server: Apache/2.2.4 (Win32)PHP/5.2.3 服務器的信息
Last-Modified: Thu, 29 Mar2012 07:25:44 GMT 上次修改時間
ETag:"23a3f-84-a1c70812;7fc477ef" 用於標識該url對象是否有修改
Accept-Ranges: bytes 是否支持斷點續傳,爲bytes表示支持,若爲none表示不支持
Content-Length: 132 表示當前會話字節數,而不web的資源數,/後爲資源總字節數
Keep-Alive: timeout=5,max=99tcp 協議中判斷終端的活躍狀態,連接時間
Connection: Keep-Alive 連接方式,tcp連接不會關閉,會保持連接
Content-Type: text/html 文檔的類型
print_r($_SERVER);
http的請求方式:主要有兩種GET、POST,在HTTP中本來沒有大小限制,但瀏覽器會對get的大小會限制
1、get會將請求的內容加在URL中
2、post不會將數據通過URL傳輸