HTTP请求
请求行
1)形式:请求方式 资源路径 协议版本号
2)eg. GET /index.php HTTP/1.1
请求行独占一行(第一行)
请求头
请求头就是各项协议内容:具体的协议内容不会每次都使用全部
1)Host::请求的主机地址(必须)
2)Accept:当前请求能够接收服务器返回的类型(MIME类型)
3)Accept-Language:接收的语言
4)User-Agent:客户浏览器所在点的一些信息
请求头不固定数量,每一个请求协议也是独占一行,最后有一个空行(用来区分请求头喝请求体)
请求体
请求数据:POST请求会有请求体。GET请求所有的数据都跟在URL之后,会在请求行的在资源路径上体现
基本格式:资源名字=资源值&资源名字=资源值……
HTTP响应
响应行
1)形式: 协议版本号 状态码 状态消息(独占一行)
HTTP/1.2 200 ok
2)200 ok:成功
3)403 forbidden :没权限访问
4)404 not found :没找到页面
5)500 server internal error:服务器内部错误
响应头
具体协议内容
1)时间:wed, 16 sep 2018 11:22:33 GMT
2)服务器:server:Apache/2/2/22(win32) PHP/5.3.13
3)内容长度:content-length:1571 是数据具体的字节数
3)内容类型:content-type:text/html 告诉浏览器对应的数据格式
响应头一个占一行,最后一行空行
响应体
实际服务器响应给浏览器的内容
常见HTTP状态码
1xx:服务器正在处理
200:成功
3xx:请求的目标已经转移或已更新
4xx:客户端出错
403:拒接访问
404:找不到
5xx:服务器错误
常见HTTP响应设置及使用
通过函数header 来实现修改HTTP响应(响应头)
注意事项:header可以设计HTTP响应,header设置响应体之前不要有任何输出
1)location:重定向,立即跳转(响应体不用解析)
浏览器在解析服务器的时候:盼盼定响应行,继续响应头,最后响应体:location是在响应头中,所以浏览器一旦剑道该协议项,不在向下解析。
2)refresh:重定向,定时跳转(响应体会解析)
会被解析 3s后再跳转延时重定向:浏览器会根据具体时间延迟后,再访问指定跳转链接:浏览器在准备跳转访问之前,会继续解析HTTP协议(响应头和响应体)
3)content-type:内容类型,mime类型
通过内容告知,浏览器正确解析内容
4)content-disposition:内容类型,mime类型扩展,激活浏览器文件下载对话框
浏览器在解析内容时,默认是直接解析:有时候需要浏览器不解析,当做内容下载成文件
会下载PHP模拟http请求
原理:
前提条件:http协议的客户端/服务端模式,HTTP协议不局限于一定要浏览器访问
curl扩展库使用
1)开启curl扩展
四步
1)建立连接:curl_init():激活一个curl连接功能
2)设置请求选项:curl_setOpt():设定选项
CUROPT_URL:连接对象
CURLOPT_RETURNTRANSFER:将服务器执行的结果(响应)以文件流的形式返回给请求界面(PHP脚本)
CURLOPT_POST:是否采用POST方式发起请求(默认请求时GET)
CURLOPT_POSTFIELDS:用来传递post提交的数据,分两种:字符串(name=abc&password=123)以及数组形式(array('name'=>'abc'),......)
CURLOPT_HEADER:是否得到相应的header信息(响应头),默认不获取
3)执行请求:curl_exec():执行选项(与服务器发起请求,得到服务器返回的内容)
4)关闭连接:curl_close():关闭资源
网友评论