PHP模拟发送POST请求之一、HTTP协议头解析

  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  index.php  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:www.sohu.com
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文档形式表现出。

以下是普遍的PHP应消息

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  login.php  HTTP/1.1

Host:passport.sohu.com
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:http://mail.sohu.com/
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=sohu.com&callback=passport20008375022711697966_cb1446298206568&appid=1113&userid=FDFFDF%40sohu.com&password=a3f4384c2bc44fa909ffd0ecc5fa8eb9&persistentcookie=0

 明白了浏览器还朝着服务器上发送了头什么,那用其他措施伪装成一个服务器也便不是难题了。

下一样省我会介绍PHP和JS处理极其基本URL的法门,解决GET请求部分的而,也用效仿发送POST请求的备做足。

要是你认为本博文对你发出帮衬,您得引进或点赞,如果你来什么问题,也足以当凡留言,一块讨论,谢谢。

相关文章