http头中Host字段的作用

作者: Spring_Bear | 来源:发表于2017-11-12 11:55 被阅读3391次

http报文头部包含了请求方法,请求的资源等信息,但是对于Host字段一直觉得可有可无,因为我所认为的Host的字段的作用在于指明http报文的方向,访问的地点,但是实际报文转发都是由底层目的端口IP决定了,所以觉得Host字段没有用。

问题

问题在于当我写的一个socket代理上,我的目的是把所有请求的报文全部重定向到一个固定的IP和端口上,想法很简单,接收请求,新建socket,连接到固定IP和端口,转发请求。结果报错:

socket.error: [Errno 104] Connection reset by peer

这个错误一般出在C/S模式中一方数据还在等待,一方却关闭了连接。我把重定向取消,即连接到原先请求想要请求的网址,程序正常运行。那么问题出在哪?

原因

前面讲了,就是http请求头的问题,http请求头第一行指明请求资源,若是没有该资源,会返回一个错误页面,但是起码是有返回信息的。但是如果Host这个字段错误,服务端就会丢弃这个连接,而客户端还在等待接收,这样就会报错。那么Host字段的作用是什么。

Host字段

我们知道,不同的域名通过A记录或者CNAME方式可以连接都同一个IP下,同一个IP也可以设置多个不同站点,那我访问不同的域名都转发到同一IP,怎么区分这些不同的站点呢,就是用的Host字段,如果服务器后台解析出Host但是服务器上找不到相应的站点,那么这个连接很可能会被丢弃,从而报错。
我在程序当中将Host修改成

Host: www.baidu.com

再将请求的资源路径修改成“/”,socket定向到百度的IP,访问成功百度首页,且不会报错。

总结

小错误,却花了点时间解决,mark一下。

参考

网络---一篇文章详解请求头Host的概念

相关文章

  • http头中Host字段的作用

    http报文头部包含了请求方法,请求的资源等信息,但是对于Host字段一直觉得可有可无,因为我所认为的Host的字...

  • Tomcat的配置和使用

    前言 http请求头部host字段作用 host是http 1.1协议中新增的一个请求头,主要用来实现虚拟主机技术...

  • php 的 $_SERVER -- PHP 学习(二十)

    $_SERVER[] 服务器和执行环境信息 HTTP_HOST 当前请求头中 Host 项的内容,如果存在的话。 ...

  • HTTP中的host字段

    HTTP与TCP/IP如何协作 1、IP地址与MAC地址 IP间的通信依赖MAC地址,通信的双方在同一局域网(LA...

  • Nginx中server的匹配顺序

    在开始处理一个http请求时,nginx会取出header头中的host,与nginx.conf中每个server...

  • Nginx常见问题

    1)Nginx多Server优先级 在开始处理一个http请求时,nginx会取出header头中的Host变量,...

  • 防御CSRF攻击

    防御CSRF攻击主要有三种策略:验证HTTP Referer字段,在请求地址中添加token并验证,在HTTP头中...

  • HTTP Headers字段以及作用

    分类 General Headers:通用头信息,同时适用于请求头和响应头,但与最终消息传输的数据无关的消息头。 ...

  • HTTP请求中的referrer和Referrer-Policy

    本文将介绍一个涉及安全和隐私的http请求头中的字段—referrer,以及如何通过Referrer Policy...

  • http请求头中Referer的含义和作用

    设置防盗链时候指明和不指明空Referer的区别及实现后的效果? 什么是Referer?这里的 Referer 指...

网友评论

    本文标题:http头中Host字段的作用

    本文链接:https://www.haomeiwen.com/subject/weynmxtx.html