HTTP協(xié)議

HTTP請求

請求行

1)形式:請求方式? 資源路徑? 協(xié)議版本號

2)eg. GET /index.php HTTP/1.1

請求行獨占一行(第一行)

請求頭

請求頭就是各項協(xié)議內(nèi)容:具體的協(xié)議內(nèi)容不會每次都使用全部

1)Host::請求的主機地址(必須)

2)Accept:當(dāng)前請求能夠接收服務(wù)器返回的類型(MIME類型)

3)Accept-Language:接收的語言

4)User-Agent:客戶瀏覽器所在點的一些信息

請求頭不固定數(shù)量,每一個請求協(xié)議也是獨占一行,最后有一個空行(用來區(qū)分請求頭喝請求體)

請求體

請求數(shù)據(jù):POST請求會有請求體。GET請求所有的數(shù)據(jù)都跟在URL之后,會在請求行的在資源路徑上體現(xiàn)

基本格式:資源名字=資源值&資源名字=資源值……

HTTP響應(yīng)

響應(yīng)行

1)形式: 協(xié)議版本號 狀態(tài)碼 狀態(tài)消息(獨占一行)

HTTP/1.2 200 ok

2)200 ok:成功

3)403 forbidden :沒權(quán)限訪問

4)404 not found :沒找到頁面

5)500 server internal error:服務(wù)器內(nèi)部錯誤

響應(yīng)頭

具體協(xié)議內(nèi)容

1)時間:wed, 16 sep 2018 11:22:33 GMT

2)服務(wù)器:server:Apache/2/2/22(win32) PHP/5.3.13

3)內(nèi)容長度:content-length:1571 是數(shù)據(jù)具體的字節(jié)數(shù)

3)內(nèi)容類型:content-type:text/html 告訴瀏覽器對應(yīng)的數(shù)據(jù)格式

響應(yīng)頭一個占一行,最后一行空行

響應(yīng)體

實際服務(wù)器響應(yīng)給瀏覽器的內(nèi)容

常見HTTP狀態(tài)碼

1xx:服務(wù)器正在處理

200:成功

3xx:請求的目標(biāo)已經(jīng)轉(zhuǎn)移或已更新

4xx:客戶端出錯

403:拒接訪問

404:找不到

5xx:服務(wù)器錯誤

常見HTTP響應(yīng)設(shè)置及使用

通過函數(shù)header 來實現(xiàn)修改HTTP響應(yīng)(響應(yīng)頭)

注意事項:header可以設(shè)計HTTP響應(yīng),header設(shè)置響應(yīng)體之前不要有任何輸出

1)location:重定向,立即跳轉(zhuǎn)(響應(yīng)體不用解析)

瀏覽器在解析服務(wù)器的時候:盼盼定響應(yīng)行,繼續(xù)響應(yīng)頭,最后響應(yīng)體:location是在響應(yīng)頭中,所以瀏覽器一旦劍道該協(xié)議項,不在向下解析。

2)refresh:重定向,定時跳轉(zhuǎn)(響應(yīng)體會解析)

會被解析


3s后再跳轉(zhuǎn)

延時重定向:瀏覽器會根據(jù)具體時間延遲后,再訪問指定跳轉(zhuǎn)鏈接:瀏覽器在準(zhǔn)備跳轉(zhuǎn)訪問之前,會繼續(xù)解析HTTP協(xié)議(響應(yīng)頭和響應(yīng)體)

3)content-type:內(nèi)容類型,mime類型

通過內(nèi)容告知,瀏覽器正確解析內(nèi)容

4)content-disposition:內(nèi)容類型,mime類型擴展,激活瀏覽器文件下載對話框

瀏覽器在解析內(nèi)容時,默認是直接解析:有時候需要瀏覽器不解析,當(dāng)做內(nèi)容下載成文件

會下載

PHP模擬http請求

原理:

前提條件:http協(xié)議的客戶端/服務(wù)端模式,HTTP協(xié)議不局限于一定要瀏覽器訪問

curl擴展庫使用

1)開啟curl擴展

四步

1)建立連接:curl_init():激活一個curl連接功能

2)設(shè)置請求選項:curl_setOpt():設(shè)定選項

CUROPT_URL:連接對象

CURLOPT_RETURNTRANSFER:將服務(wù)器執(zhí)行的結(jié)果(響應(yīng))以文件流的形式返回給請求界面(PHP腳本)

CURLOPT_POST:是否采用POST方式發(fā)起請求(默認請求時GET)

CURLOPT_POSTFIELDS:用來傳遞post提交的數(shù)據(jù),分兩種:字符串(name=abc&password=123)以及數(shù)組形式(array('name'=>'abc'),......)

CURLOPT_HEADER:是否得到相應(yīng)的header信息(響應(yīng)頭),默認不獲取

3)執(zhí)行請求:curl_exec():執(zhí)行選項(與服務(wù)器發(fā)起請求,得到服務(wù)器返回的內(nèi)容)

4)關(guān)閉連接:curl_close():關(guān)閉資源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容