背景:生产联调验收时,商户发送的http请求返回connection reset错误。通过排查网络问题、服务端问题、客户端问题最终解决。
网络排查:
1.抓包看双方是否成功建立连接--成功
2.telnet、curl命令看服务端是否成功返回--成功
服务端问题:
通过postman向生产环境直接发起请求看是否成功返回--成功
客户端问题:
查看整个报文请求(包括报文头和报文体),发现报文头header中Host参数被修改,导致响应connetction reset错误。
在request请求中,Host参数在HTTP/1.1版本中是默认携带的,它表示要访问的目标主机,如访问百度时的Host参数:
Host: www.baidu.com
Host字段在HTTP报文中起着指定请求目标服务器的作用,使得多个虚拟主机可以共享同一个IP地址,并确保请求被正确地路由到目标站点。
但是host参数也会带来相应的风险即host注入问题,通常服务端会检测Host值并做相应的处理来防范这种风险,因此当要访问的域名和Host中上送的域名不一致时也不难理解服务端响应connection reset错误了。
host注入风险参考博文:让你成为网络世界中有破坏力的人-HTTP报文HOST头攻击_host攻击-CSDN博客