當前位置:才華齋>計算機>php語言>

PHP中Http協議post請求引數

php語言 閱讀(3.29W)

本文給大家介紹PHP中Http協議post請求引數,具體內容如下所示,就跟隨本站小編一起去了解下吧,想了解更多相關資訊請持續關注我們應屆畢業生考試網!

PHP中Http協議post請求引數

WEB開發中資訊基本全是在POST與GET請求與響應中進行,GET因其基於URL的直觀,易被我們瞭解,可POST請求因其資訊的隱蔽,在安全的同時,也給開發者們模擬傳送帶來了麻煩。接下來的幾篇博文中,我將結合自己的筆記和理解,詳細解釋PHP進行POST請求的幾種方法,如有錯誤,煩請指正。

HTTP協議資訊是WEB開發中的一項重要內容,瞭解它可以幫助我們更深刻地理解BS互動,也有利於我們從更底層理解WEB開發。HTTP協議是一種簡單靈活方便的通訊協議,並且要記住,它是一種無狀態的協議,即它是一種無記憶的協議,每一次的互動都是單獨的。

我們可以用瀏覽器的.開發工具(IE的F12 火狐的FireBug等)的“網路”面板來檢視HTTP頭資訊。

一般地HTTP頭資訊分為三類:請求資訊,響應資訊和互動資訊(個人認為也是請求資訊的一種)。

  1,請求資訊:

在訪問一個網站時會由客戶端發出請求資訊,此資訊不帶有資料,只是單純地向伺服器接觸,促使伺服器返回響應資訊。

其格式為兩部分:請求行和訊息報頭。

A.請求行: method(請求方法) path(請求站內地址) HTTP/version(協議/版本資訊)

常見的請求方法有GET/POST/HEAD/OPTION等

B.訊息報頭:

Host(必須):主機和埠號,埠號預設為80

Accept:期望接收內容型別(image/gif text/html */*)

Accept-Encoding:期望接收的壓縮型別(gzip deflat)

Accept-Charset:期望接收的字符集(utf-8)

Accept-Language(zh-CN)

Cookie:使用者的Cookie資訊

Connection:連線控制

User-Agent:客戶端資訊

... ...

以下是一個典型的請求頭資訊:

GET HTTP/1.1

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding:gzip, deflate, sdch

Accept-Language:zh-CN,zh;q=0.8

Cache-Control:max-age=0

Connection:keep-alive

Cookie:SOHUHOMETAB=visit:2; IPLOC=CN1407; SUV=1510312046259910

Host:

If-Modified-Since:Sat, 31 Oct 2015 12:45:22 GMT

Upgrade-Insecure-Requests:1

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36

  2,響應資訊

伺服器返回資料

響應資訊分為三部分:狀態行 訊息報頭 響應正文

A.狀態行:HTTP/version(協議/版本資訊) 狀態碼 狀態文字(對狀態碼的文字描述)

狀態碼共有5類:

1XX:表示臨時響應,需要請求者繼續操作

2XX:表示響應成功,伺服器成功地響應了請求

3XX:表示重定向,需要請求者進一步操作

4XX:表示客戶端錯誤,伺服器無法正常響應

5XX:表示伺服器端錯誤,伺服器無法正常響應

具體資訊可參考:HTTP狀態碼詳解

B.訊息報頭:

Server:伺服器資訊

Content-Encoding:資料壓縮格式

Content-Length:資料長度

Content-Type:資料型別

Cache-Control:快取控制

Connection:連線控制

Date:日期資訊

Expires:返回資料的過期資訊

Last-Modified:返回最後的修改時間

Set-Cookie:設定客戶端的Cookie資訊

... ...

C.響應正文

即返回的頁面資料,在頁面以HTML文件形式表現出來。

以下是常見的響應訊息

HTTP/1.1 200 OK

Cache-Control:no-cache

Connection:close

Content-Encoding:gzip

Content-Length:6947

Content-Type:text/html; charset=GBK

Date:Sat, 31 Oct 2015 13:30:11 GMT

Expires:-1

Pragma:no-cache

Proxy-Connection:keep-alive

Server:nginx/1.2.5

Set-Cookie:JSESSIONID=yiuug4yejhc1cdbzydoxlcpn;Path=/

3,互動資訊

是包含了請求資料的請求資訊 常見於使用者上傳檔案 註冊等

其分為三部分:請求行 訊息報頭 請求正文

A.與請求資訊的請求行相同

B.在請求報頭的基礎上添加了有關請求正文的資料

Content-Type:上傳資訊的內容型別

Content-Length:上傳資訊的長度

... ...

C.請求正文:

即請求的具體資料串(name=xxx&passwork=xxx),當然為了安全起見,有時會對POST資訊加密編碼。

以下是典型的請求訊息:

GET HTTP/1.1

Host:

Accept:text/html,application/xhtml+xml,application/xml

Accept-Encoding:gzip, deflate

Accept-Language:zh-CN,zh;q=0.8

Cache-Control:max-age=0

Connection:keep-alive

Content-Length:166

Content-Type:application/x-www-form-urlencoded

Referer:

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36

Form Data

domain=&callback=passport20008375022711697966_cb1446298206568&appid=1113&userid=FDFFDF%&password=a3f4384c2bc44fa909ffd0ecc5fa8eb9&persistentcookie=0

明白了瀏覽器都往伺服器上傳送了些什麼,那用其他方法偽裝成一個伺服器也就不是難事了。

下一節我會介紹PHP和JS處理最基本URL的方式,解決GET請求部分的同時,也將模擬傳送POST請求的準備做足。