使用Telnet发送HTTP POST请求时无法输入请求体参数的问题
使用Telnet发送POST请求时无法输入请求体的解决方法
问题原因
HTTP协议规定请求头以**两个连续的回车换行(\r\n\r\n)**作为结束标记,Telnet检测到这个标记后会立即发送当前输入的请求头,导致你还没输入请求体就结束了请求。
解决方法
方法1:提前构造完整请求并粘贴
- 先在本地文本编辑器里写好完整的POST请求内容,必须包含
Content-Length字段(值要和请求体的字节数完全匹配),示例:
POST /your-api-path HTTP/1.1 Host: your-domain.com Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=test&password=123456
- 用Telnet连接目标服务器:
telnet your-domain.com 80(如果是HTTPS,建议用openssl s_client -connect your-domain.com:443代替Telnet) - 连接成功后,直接粘贴刚才写好的完整请求内容,最后敲回车即可发送。
方法2:调整Telnet输入模式
- 连接服务器:
telnet your-domain.com 80 - 按
Ctrl+]进入Telnet命令行,输入mode character并回车,回到输入状态 - 逐行输入请求头,最后一行输入完后,只敲一次回车,接着输入请求体,全部输入完成后再敲两次回车触发发送
注意事项
- 若发送JSON格式请求体,需将
Content-Type改为application/json,同时更新Content-Length的数值 - HTTPS请求不建议用Telnet,因其不支持加密,使用
openssl s_client工具可建立加密连接后发送HTTP请求
内容的提问来源于stack exchange,提问作者littlekitty
相关产品推荐
相关产品推荐

