关于netcat命令与http协议,客户端与服务端交互
在阅读了《erlangOTP实战》中,有一节是讲HTTP协议相关的.利用linux下的命令nc(netcat)以及curl两个命令. 利用netcat可以自行建立监听的套接字,并对发往该套接字的所有数据进行观测。利用curl可向http发送请求.
1>Get请求:
首先在终端窗口启动命令nc,并让它监听任意一个端口,这里的端口指定为1156:
$ nc -l 1156
运行起来之后,再打开一个终端窗口,用curl向本地的1156端口发送一条get请求:
$ curl http://localhost:1156/foo
再切换至第一个终端窗口,会看到:
可以从报文头中看到相关信息.
2>put请求:
先创建个文本文件并写入文本:
$ echo erlang > put.txt
接下来,重启nc,在另一个终端窗口启动curl,
$ curl -T put.txt http://localhost:1156/foo
则在另一个终端窗口会看到:
注意这里的Expect:100-continue,Expecty协议头用于提升web的交互,如果请求报文中有它,服务端就发送应答"100-continue",指示客户端继续发送报文;如果服务端不打算处理报文体,就关闭连接.