对于有的网站(比如斗鱼)直接访问ip会收到403错误: 403的意思是:服务器收到请求但是拒绝提供服务。
比如我们ping得斗鱼的一个ip是121.194.7.5; 我们在浏览器地址栏直接输入121.194.7.5或者是https://121.194.7.5
返回了403、这是因为我们在地址栏输入https://121.194.7.5或者直接输入ip、都表明这是一个http请求、最好写上https:// 以表明所使用的应用层协议、毕竟也可以用ftp协议来访问。
在http请求报文(这是一个http应用层协议)中有一个字段是host: 如果我们直接用域名访问比如https://www.douyu.com、那么host就是www.douyu.com、但是如果直接使用ip使用: 那么host就是121.194.7.5、所以服务端可以通过检测host字段是域名还是ip来封禁使用ip直接访问。
另外的可能
1、虚拟主机。一个ip对应一个服务器主机、但是这个服务器主机上放置了n个网站、每个网站放在一个目录下、绑定一个域名、所以用域名访问主机可以解析到对应的网站目录、但是用IP的话、服务器就不知道该解析到哪个目录。
2、可能获取到的IP是CDN服务器的IP。CDN为多个网站提供CDN服务、如果不指定域名、CDN不知道用户想要访问哪个网站。