为啥有些网站通过host可以访问而直接输入ip不能
应该是一个IP上可以有多个网站,对应许多host,直接输入IP,数据抵达对方服务器,不会转发给下面的网站HOST
■网友
我也是这方面的小白,刚才在网上看到一个帖子描述的问题跟你说的一模一样,我把关键点粘给你看看:
因为是虚拟主机,主机上放置了N个网站,而每个网站绑定1个或以上域名,所以用域名访问主机可以解析到网站目录,但用IP的话服务器就不知道解析到哪个目录了!因为http请求里包含了域名信息,所以用域名访问,虚拟主机服务器会根据域名来返回网站,直接用IP访问因为没有域名信息所以服务器不知道要访问的是哪个网站目录,只有共享IP的虚拟主机或者VPS才有这情况,像有邦定独立IP功能或者独立主机的那些服务器就不会有这问题了 。 【为啥有些网站通过host可以访问而直接输入ip不能】 原链接:一个网站用域名可以访问,用ip不能访问,是为什么? - 风语者的日志 - 网易博客
■网友
稍了解过一些http、服务器相关的知识,但很多也是道听途说,模棱两可的,可能有错,抛砖引玉吧。问题的前提是,需要更改host访问网站,且更改后能成功访问,说明DNS不能获得正确的IP地址,但通过正确的IP地址可以连接到正确的服务器上。第一种可能:假如是一次单纯的http请求,指定host用域名访问,和直接输入ip访问,效果应当是一样的,但仅限于一次请求。现如今,当你打开一个网页,事情会变得复杂很多,网页不光是一个html,还有许多css样式、javascript脚本、其他网页元素(Flash等)需要下载,执行js脚本或Flash插件的时候,还会进行新的网络请求。html里包含的css、js资源地址,以及js脚本发出的网络请求地址,可能是用域名记录的(而非IP地址)。假如是改host的方式,那么你的系统知道,这个域名对应正确的IP地址,可顺利访问。如果是没有host,输入IP访问,那么对于网页资源、脚本中的域名地址,系统不知道这个域名就是你输入的IP,仍需要通过DNS获取IP地址,DNS有问题的话,就不能正确加载。墙最早只做DNS劫持、污染,通过域名得不到正确的IP,如果你ping一个网址,实际ping的是假的IP地址,可能是超时无响应,可能是错误的服务器的回应,但你ping它的IP地址,结果是正确的,所以改host有效。后来墙高级了,可以阻拦、劫持你的请求,那么怎么ping都会出问题。值得注意的是,仍有很多网站只有DNS污染,没有针对IP地址的行为(或网站IP地址在不断更新,墙的更新慢一拍),所以改host仍然有效。第二种可能:有些网站服务器端程序需要通过你的URL来决定返回的内容(可能一个IP地址上的服务器需要同时提供两个网站的访问),那么你的URL中不包含正确的域名,服务器程序就没办法回应你(不知道你要访问的到底是个啥),只好返回个错误。如果题主能补充网页错误的内容,最好是Chrome中的Developer Tools(F12键)中Network选项卡中的内容,或者提供网页URL地址、IP地址等,会对问题有很大的帮助。最后,为啥标签有个舰Colle #(滑稽)
■网友
首先按您的说法,是否能访问和host并没有关系。其次分析不能访问的原因,ip以前能访问网站现在却不能,考虑是否网站更换了ip。如果没换ip而用网址可以正常访问,说明网站管理人员取消了ip访问,而非被墙,对于用户来说是没有办法的。
■网友
vhost。中文叫虚拟主机。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 有啥方法,网站,项目可以自己练习计算广告学
- 你为啥从窝窝商城离职?
- 设计专业学生上传自己的作品,用哪个网站比较好
- 为啥5G和2.4G默认的BSSID是相同的
- 枸杞|每天用枸杞泡水,身体会有4个可喜变化,但有些人享用不了
- 为啥电器实体店的价格比淘宝贵那么多