http协议

16 篇文章 0 订阅

请求行: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);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值