PHP中的http協議
http協議基本組成
報文:用於Http協議交互的信息
請求行:包括請求的方法,URL和HTTP協議版本
狀態行:包括響應結果的狀態碼,狀態描述和Http版本
首部字段:包括請求和響應的各種條件和屬性值(鍵值對)
下面通過一個實例來進行演示:
在localhost目錄下建立index.php
<?php echo "Http demo"; ?>
接下來,在瀏覽器中打開localhost
一共三部分信息。
telnet模擬Http請求
1. cmd下->telnet主機地址 80
2. 按下快捷鍵:ctrl+"]" 再按下回車鍵 打開回顯功能
3. 發送請求報文
'telnet' 不是內部或外部命令,也不是可運行的程序,解決方法:控制面板 -> 程序 -> 打開或關閉Windows功能 -> 勾選Telnet客戶端 -> 確定。Win + R打開cmd窗口,輸入以下命令。
C:\Users\ThinkPad>telnet 127.0.0.1 80
接着回車后按下Ctrl + ] 打開回顯功能,然后再按回車鍵。
輸入請求行后回車。
分析內容含義:
GET(請求方法) /index.php(請求URL) HTTP/1.1(http協議版本)----->請求行
Host:localhost(請求首部)
(空行)
響應內容:
HTTP/1.1 200(響應結果狀態碼) OK(狀態描述)
Date: Sun, 12 Mar 2017 13:25:07 GMT
Server: Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
X-Powered-By: PHP/5.5.3
Content-Length: 14
Content-Type: text/html
(空行)
鍩縣ttp demo
修改index.php內容如下:
<?php //echo "Http demo"; $str = implode($_POST,"\n"); echo $str; ?>
在環境變量的系統變量path屬性中添加C:\Windows\System32;即可滿足cmd粘貼功能。
下面演示POST請求:
POST /index.php HTTP/1.1(請求行)
HOST:localhost
Content-type:application/x-www-form-urlencoded(首部)
content-length:20(下面是空格)act=query&name=ghostHTTP/1.1 200 OK
Date: Sun, 12 Mar 2017 14:10:51 GMT
Server: Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
X-Powered-By: PHP/5.5.3
Content-Length: 16
Content-Type: text/html鍩縬uery
ghost