上一篇讲解了http协议的大致原理与基本格式,这一篇使用mac系统自带telnet工具来模拟http请求,分为GET请求和POST请求
GET请求
为了测试使用,我在本地服务器上上传了一个php脚本,
这个脚本的功能是在浏览器输入用户名和密码,正确的用户名为zhangsan,密码为1234,如果用户名和密码正确,那么就返回username=zhangsan,如果用户名和密码不正确,那么就返回空字符。同时支持get请求和post请求,会把请求方法也输出。
1.首先打开终端,在终端输入telnet 127.0.0.1 80
2.连接成功后,按终端提示 按住control+] 进入telnet命令行,注意命令操作一定要快,因为telnet连接web服务器后,在短时间内就会被web服务器关闭连接。具体连接时间是多少不太清楚,目测1分钟左右。所以最好提前把需要输入的命令复制好,等用的时候直接复制粘贴。
为了方便,我就把命令敲在此处:
GET /login.php?username=zhang&password=1234 HTTP/1.1
Host:localhost
3.注意此处一定要在按一下回车,不能直接在telnet>后面输入命令
4.输入两条命令后 连续按两次回车 即是发出请求
可以看到,服务器返回是登录成功。
POST请求
post请求与get请求前边操作一致,只是请求行 请求头 与请求头有区别
一个post请求的命令如下:
POST /login.php HTTP/1.1
Host:localhost
Content-type:application/x-www-form-urlencoded
content-length:28
username=zhang&password=1234
注意请求头输入完之后要留一个空行,表示请求头输入完成,接下来的内容是请求体。
可以看到telnet发送的POST请求也得到了服务器的正确响应。
通过使用telnet模拟http的请求,我们发现,其实只要我们发送给服务器的消息的格式符合http请求规范,那么http服务器(apache,ngnix)就能正确响应我们的请求,而浏览器所做的工作就是包装我们发送的http请求,形成符合规范的http请求,详细过程我们可以通过谷歌浏览器或者抓包工具进行抓取分析。