http协议
来源:互联网 发布:实际投资算法 编辑:程序博客网 时间:2024/05/19 02:19
请求行:request_line
请求数据的第一行,用来说明当前请求的最基本信息。
由三块组成:
GET /index.php?p=back&c=Admin&a=login HTTP/1.1 换行
方式 资源地址(没有域名) 协议版本 \r\n(回车换行CRLF)
请求头:request_header
请求头信息,请求标头
浏览器需要传输给服务器的属性数据。
# 主机,请求的主机。用于标识一台web服务器上的其中一个虚拟主机的。
Host: shop.kang.com
# 用户代理UA,什么发出的请求。
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
# 可以接受的内容类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
# 可以接受的语言
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
# 可以接受的数据编码类型(压缩编码)
Accept-Encoding: gzip, deflate
# 携带的cookie数据
Cookie: PHPSESSID=i76sa2297sp1adlfk3e4eja612
# tcp连接类型 keep-alive保持激活
Connection: keep-alive
# Keep-Alive: 30 保持连接的时间段秒
# 缓存控制选项
Pragma: no-cache
Cache-Control: no-cache
注意语法格式:
头,由标识与内容组成,使用冒号分隔(标识与冒号间不能存在空格)
每个头占用一行,行结尾,使用CRLF(回车换行\r\n)
可以存在多个头。
头信息结束使用空行标志
请求主体:request_content
请求的主要用户数据。
就是POST数据。
如果方式为POST,则需要请求主体部分,(GET没有请求主体)
get请求
<?php//http://www.sina.com.cn/$host = 'www.sina.com.cn';//host使用IP也可以$port = '80';$link = fsockopen($host, $port);// var_dump($link);define('CRLF', "\r\n");// 请求行$request_data = 'GET / HTTP/1.1' . CRLF;// 请求头$request_data .= 'Host: www.sina.com.cn' . CRLF;$request_data .= 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0' . CRLF;$request_data .= 'Connection: close' . CRLF;// 空行表示头结束$request_data .= CRLF;// 请求主体,GET没有主体// 发送fwrite($link, $request_data);// 处理响应数据while(!feof($link)) {// echo iconv('utf-8', 'gbk', fgets($link, 1024));echo fgetS($link, 1024);}fclose($link);
post请求
<?php$host = 'shop.kang.com';//host使用IP也可以$port = '80';$link = fsockopen($host, $port);// var_dump($link);define('CRLF', "\r\n");// 请求行$request_data = 'POST /index.php?p=back&c=Admin&a=check HTTP/1.1' . CRLF;// 请求头$request_data .= 'Host: shop.kang.com' . CRLF;$request_data .= 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0' . CRLF;$request_data .= 'Connection: close' . CRLF;//post请求特殊的头,描述请求主体$post_data = array('username'=>'hehhe', 'password'=>'1234abcd', 'captcha'=>'HHHH');//username=admin&password=1234abcd&captcha=HHHH$post_content = http_build_query($post_data);$request_data .= 'Content-Length: ' . strlen($post_content) . CRLF;$request_data .= 'Content-Type: application/x-www-form-urlencoded' . CRLF;// 空行表示头结束$request_data .= CRLF;// 请求主体$request_data .= $post_content;//主体结束不需要CRLF// 发送fwrite($link, $request_data);// 处理响应数据while(!feof($link)) {echo iconv('utf-8', 'gbk', fgets($link, 1024));}fclose($link);
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议。。。
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- http协议
- HTTP协议
- HDU 1712 ACboy needs your help (分组背包入门题)
- Spring使用静态工厂方法创建Bean
- 小技巧--视频编辑会声会影安装
- Error vs Exception的区别?
- 高效开发习惯
- http协议
- 二维计算几何模板--圆
- Ubuntu建立wifi热点(支持Android手机)
- read函数和fread函数的区别
- python学习(10)————函数与模块
- iOS6与iOS7屏幕适配技巧
- lucene6.1.0 for linux 学习一:配置
- 150. Evaluate Reverse Polish Notation
- 随手敲代码——IOC猜想(终极版)