为什么用IP无法访问网站,域名可以访问?

  我们访问网站都是通过域名进行访问的,偶尔会使用网站IP进行访问,如学校通常使用IP登录教务处,但很多的时候我们无法通过ip进行访问其他网站,这就涉及到服务器的问题了。

      网站都是依托在服务器上面的,而服务器有很多种,阿里云有ECS、虚拟主机等。不得不说的是我们在访问网站的时候会涉及到一个DNS解析的过程,是将浏览器地址栏的域名转化成IP地址的一个过程,这个过程是由DNS服务器执行的,不多说了,详见(相关文档:一次完整的HTTP请求过程)。

  一般的网站会选择放在虚拟主机,且在主机上放置了很多个网站,而每个网站绑定1个或以上域名,虚拟主机上,例如Apache主机的配置会将对应的ip解析到对应的网站目录的,实现一台服务器上配置多个站点;一般用户在访问的时候,会产生一个http请求报文,上面的host信息可以提供给服务器,告诉服务器要访问的域名,从而实现一台主机绑定一个IP,即使有多个网站,也不会相互干扰。但使用IP访问,主机不知道用户访问的具体目录,请求便会出现错误。

这里指的是共享主机,如果是独立的主机,网站则是可以使用IP进行访问的。

 

 

  如果就想用ip形式访问,可以手动设置Host头域信息。

  java中以org.apache.http.client.methods.HttpGet实现http请求为例,解决方法HttpGet httpGet = new HttpGet(url);

  httpGet.setHeader(“Host”, ServerHostname);

posted @ 2016-10-17 10:44  恩恩先生  阅读(26626)  评论(0编辑  收藏  举报