HTTP請求的格式
1)請求信息:例如“Get /index.php HTTP/1.1”,請求index.php文件
2)表頭:例如“Host: localhost”,表示服務器地址
3)空白行
4)信息正文
“請求信息”和“表頭”都必須使用換行字符(CRLF)來結尾,空白行只能包含換行符,不可以有其他空格符。
下面例子發送HTTP請求給服務器www.yhsafe.com
GET /index.php HTTP/1.1↙ //請求信息
Host:www.yhsafe.com↙ //表頭
↙ //空格行 ↙ ↙符號表示回車鍵,在空白行之後還要在按一個空格才會發送HTTP請求,HTTP請求的表頭中只有Host表頭是必要的餓,其余的HTTP表頭則是根據HTTP請求的內容而定。 HTTP請求的方法 1)GET:請求響應 2)HEAD:與GET相同的響應,只要求響應表頭 3)POST:發送數據給服務器處理,數據包含在HTTP信息正文中 4)PUT:上傳文件 5)DELETE:刪除文件 6)TRACE:追蹤收到的請求 7)OPTIONS:返回服務器所支持的HTTP請求的方法 8)CONNECT:將HTTP請求的連接轉換成透明的TCP/IP通道 HTTP響應的格式 服務器在處理完客戶端所提出的HTTP請求後,會發送下列響應。 1)第一行是狀態碼 2)第二行開始是其他信息 狀態碼包含一個標識狀態的數字和一個描述狀態的單詞。例如: HTTP/1.1 200 OK 200是標識狀態的是數字,OK則是描述狀態的單詞,這個狀態碼標識請求成功。HTTP請求和響應的例子
打開cmd輸入telnet,輸入open www.00aq.com 80
打開連接後輸入
GET /index.php HTTP/1.1↙
Host:www.00aq.com↙
↙ ↙ 返回HTTP響應的表頭返回的首頁內容
使用PHP來發送HTTP請求
header函數可以用來發送HTTP請求和響應的表頭
函數原型
void header(string string [, bool replace [, int http_response_code]])
string是HTTP表頭的字符串
如果replace為TRUE,表示要用目前的表頭替換之前相似的表頭;如果replace為FALSE,表示要使用多個相似的表頭,默認值為TRUE
http_response_code用來強制HTTP響應碼使用http_response_code的值
實例:
<?php
// 打開Internet socket連接
$fp = fsockopen(www.00aq.com, 80);
// 寫入HTTP請求表頭
fputs($fp, “GET / HTTP/1.1rn”);
fputs($fp, “Host: www.00aq.comrnrn”);
// HTTP響應的字符串
$http_response = “”;
while (!feof($fp))
{
// 讀取256位的HTTP響應字符串
$http_response .= fgets($fp, );
}
// 關閉Internet socket連接
fclose($fp);
// 顯示HTTP響應信息
echo nl2br(htmlentities($http_response));
?>