项目上遇到一个问题跟你们分享下,配置的localhost地址本地没法访问接口,外网却能够访问,查其缘由百度资料比较全面的解释html
localhost与127.0.0.1的概念和工做原理之不一样windows
要比较两个东西有什么不一样,首先要弄清二者的概念。因此,咱们从概念开始。服务器
localhost:也叫local ,正确的解释是:本地服务器
127.0.0.1:在windows等系统的正确解释是:本机地址(本机服务器)网络
一个是“本地”,一个是“本机”。不过从这两个词来看,仍是不能比较二者的区别。咱们再看看他们的工做原理。post
localhot:是不经网卡传输的,它不受网络防火墙和网卡相关的的限制。
127.0.0.1:是经过网卡传输的,它依赖网卡,并受到网络防火墙和网卡相关的限制。网站
经过上述概念和工做原理的比较,我想如今你们都内心有谱了吧,知道localhost与127.0.0.1有什么不一样了。文中开头提到的localhost不能访问但127.0.0.1能够访问的问题,究其缘由,极可能是localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是经过网络再去访问本机,可能涉及到网络用户的权限。搜索引擎
另外,咱们如今也应该明白了一个道理,那就是通常设置程序时本地服务用localhost是最好的,localhost不会解析成IP,也不会占用网卡、网络资源。插件
localhost不能访问127.0.0.1能够访问的解决方案htm
通常状况下ping localhost 应该为127.0.0.1 ,可是有时会出来下面这个东西:索引
>ping localhost
reply from ::1: times<1ms
reply from ::1: times<1ms
reply from ::1: times<1ms
地址根本不是“127.0.0.1”,而是“::1:”
>ping 127.0.0.1 正常
reply from 127.0.0.1 : bytes=32 times<1ms
reply from 127.0.0.1 : bytes=32 times<1ms
reply from 127.0.0.1 : bytes=32 times<1ms
♦缘由分析:
IPV6协议将127.0.0.1解析为 ::1 (127.0.0.1 ipv6的形式)
Vista开始菜单中输入cmd回车后打开命令提示符,输入ping localhost默认的就会出现返回的数据包并非127.0.0.1而是::1。这就是Ipv6格式的本地地址,
♦解决方案1:
修改host文件用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:
127.0.0.1 localhost
若是没有则将其添加进去,再查看可否访问localhost。
host文件部份内容
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1localhost
localhost 127.0.0.1
♦解决方案2:
一、打开Internert信息管理查看IIS是否启动,且默认网站时候已经开启;
二、打开http://127.0.0.1/ 看是否能访问IIS的默认网页,能访问则说明IIS已经成功安装到电脑上,多是没法解析localhost;
三、开始--命令(cmd)--ping localhost,看是否能ping通,从127.0.0.1上返回信息,若是成功则说明能够解析localhost;
四、若是上一步不成功,则用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:127.0.0.1 localhost ,若是没有则将其添加进去,再查看可否访问localhost。
五、尝试将网站的主目录指向另外一个目录或新建一个虚拟目录,并在该新目录建立一个新的网页文件,如index.html,而后将其加到默认网站的"文档"项中做为默认访问的网页,从新输入网址:http://localhost/,看否能访问。
六、仍是不行的话将IIS卸载掉,从新再安装一次。
♦解决问题的思路:
一、ping一下localhost,这个是关键,看看是否能ping通,而后看解析到那个ip地址下去了二、而后查看本机的hosts文件,看看是否有被修改,若是被修改,就改回正常的模式三、解决问题本质,ipconfig看看网络是否正常,若是不正常就进行修复四、用杀毒软件或者360等修复软件进行扫描,看看是否存在恶意插件或者病毒,而后清除,一劳永逸!五、多动脑,想办法解决问题,善于用搜索引擎。