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 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文档形式表现出来。
以下是常见的响应消息
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请求的准备做足。
如果您觉得本博文对您有帮助,您可以推荐或点赞,如果您有什么问题,也可以在下方留言,一块讨论,谢谢。
推荐阅读
-
如何解决Ajax访问不断变化的session的值不一致以及HTTP协议中的GET、POST的区别
-
PHP中Http协议post请求参数
-
Angularjs中$http以post请求通过消息体传递参数的实现方法
-
php模拟asp中的XmlHttpRequest实现http请求的代码
-
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
-
php中运用http调用的GET和POST方法示例
-
PHP中模拟处理HTTP PUT请求的例子
-
spring boot拦截器中获取request post请求中的参数
-
浅谈HTTP中GET和POST请求方式的区别
-
php中用socket模拟http中post或者get提交数据的示例代码