修改hosts不管用。为什么修改127.0.0.1指向的域名,访问域名却弹出别的网站

本文详细介绍了Windows系统中hosts文件的工作原理及其配置方法。包括hosts文件的位置、如何正确修改及保存,以及解决修改后不生效的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux上的hosts:
一般在LINUX下修改完/etc/hosts文件都会立即生效的,即便偶尔不生效,只要重启一下network服务就可以了。
win上的hosts:
但是windows却是会遇到这样的问题,而且在不同版本的系统中还略有区别。

原理:
在解决问题之前,让我们了解一下dns和hosts的知识。
我们知道在访问网站时,首先要通过DNS服务器把要访问的域名解析成IP地址后,我们才能在浏览器中看到所访问网站的页面内容。
根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有网络域名的映射关系。
如果有,则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析, 也就是说Hosts的请求级别比DNS高
首先:要知道hosts文件的位置,在xp,2000,win7等系统中找到如下位置C:\windows\system32\drivers\etc,我们可以看到hosts文件,注意hosts文件是ascii编码方式,而且是没有后缀名的。
然后:正确修改hosts文件,一般hosts文件里面都会有个示例, 比如 64.233.162.83google.com 即代表打开google.com这个网址将解析到64.233.162.83,ip地址与网址间 至少要有一空格,另外在 最后一行书写映射时一定要加上回车再保存以避免最后一行不生效,如果某条记录暂时不用,只需要在它前面加一个#号即可。  

hosts文件默认具有隐藏属性,系统默认设置情况下是看不到的,

解决办法是打开我的电脑-点击工具-文件夹选项-查看-取消勾选隐藏受保护的系统文件,确定即可。

如果修改后无法保存,请在Hosts文件上面点右键-属性-把只读属性去掉即可保存。

在修改HOSTS文件时候,还常常遇到修改保存后无效的情况,我们可以使用ipconfig /flushdns命令来刷新dns缓存,或者也可以在管理工具中打开服务,找到DNS Client将其停用并改为手动模式在修改完hosts启动。

注意:当你在打开浏览器的情况下修改hosts文件时,关闭浏览器时系统才会释放掉hosts文件占用的那部分内存,我们再次打开浏览器访问就发现已经生效了。如果遇到windows 7 操作系统无法打开和编辑的情况,一般是因为安全机制UAC造成的,你可以按着Shift键,然后Hosts文件上面右键,以管理员方式运行即可。或者修改Hosts文件权限,将当前登录的账号加入到安全选项卡中,赋予写入权。


转自:https://www.zhihu.com/question/40971769

<think>我们正在解决的问题是:如何在VSCode中设置本地访问使用127.0.0.1地址?根据引用内容,我们知道在VSCode中运行调试(F5)时,默认会启动一个本地服务器,并显示类似`http://127.0.0.1:8000`的地址。但有时我们可能希望确保总是使用127.0.0.1是localhost或者其他地址。实际上,在VSCode中启动的服务器所使用的地址(127.0.0.1或localhost)是由代码中监听的host参数决定的,而是VSCode本身的设置。因此,我们需要在代码中指定host为'127.0.0.1'。但是,用户可能是在运行同的项目(如Flask、Node.js等),所以我们需要根据同的项目类型进行配置。下面我们分别针对常见的几种情况(Flask、Node.js)进行说明:1. Flask应用:在Flask中,我们可以在`app.run()`中指定host参数为'127.0.0.1',例如:```pythonif __name__== '__main__':app.run(host='127.0.0.1',port=5000)```这样,Flask就会只监听127.0.0.1这个地址。2. Node.js应用:在Node.js中,我们可以在创建服务器时指定hostname为'127.0.0.1',例如:```javascriptconst hostname ='127.0.0.1';constport =3000;server.listen(port,hostname, ()=> {console.log(`Server runningat http://${hostname}:${port}/`);});```3.使用VSCode的调试配置(launch.json):对于某些项目,我们可能通过VSCode的调试配置来启动。这时可以在launch.json文件中设置args参数(对于Node.js)或env参数等来指定主机地址。例如,对于Node.js应用,可以在launch.json中这样配置:```json{"version": "0.2.0","configurations": [{"type":"node","request": "launch","name": "LaunchProgram","program":"${workspaceFolder}/app.js","args":["--host","127.0.0.1"]}]}```但是,具体参数取决于你的应用如何解析命令行参数。更通用的方法是在代码中指定。对于Flask应用,在launch.json中可以通过设置环境变量FLASK_RUN_HOST来指定:```json{"version": "0.2.0","configurations": [{"name":"Python: Flask","type": "python","request":"launch","module":"flask","env":{"FLASK_APP":"app.py","FLASK_ENV": "development","FLASK_RUN_HOST":"127.0.0.1"},"args": ["run"]}]}```注意:Flask默认的host127.0.0.1,所以如果设置,默认就是127.0.0.1。但如果你之前设置过0.0.0.0,那么需要改回127.0.0.1。4.使用Live Server扩展(针对静态HTML):如果你使用的是VSCode的Live Server扩展来启动本地服务器,那么默认情况下它使用的是127.0.0.1。但如果你发现它使用了其他地址,可以在设置中更改:-打开VSCode设置(Ctrl+,),搜索“live serversettings”-找到“LiveServer >Settings:Host”这一项,将其设置为“127.0.0.1”总结:要确保使用127.0.0.1,主要是在代码中或启动配置中指定host127.0.0.1。VSCode本身并直接控制服务器绑定的地址,而是通过代码或调试配置来实现。因此,请根据你的项目类型,选择上述方法之一进行设置。注意:使用127.0.0.1作为主机地址时,只能在本机访问,同一局域网内的其他设备无法访问。如果你需要让其他设备访问,则需要使用0.0.0.0(如之前的问题中所述)或者本机的局域网IP地址。引用说明: [^1]展示了在VSCode中启动调试后,控制台显示的地址是127.0.0.1,说明默认情况下就是127.0.0.1。 [^3]展示了Node.js服务中如何设置hostname为127.0.0.1。[^4]提到Flask的本地部署,但未具体说明地址设置,过我们可以通过Flask的配置来设置。</think>### 在 VSCode 中配置本地访问使用 127.0.0.1 地址 #### 方法 1:通过代码直接指定(推荐) 在应用的启动代码中明确设置 `host='127.0.0.1'`: **Flask 应用示例**: ```python from flask import Flask app = Flask(__name__) if __name__ == '__main__': # 明确指定使用 127.0.0.1 app.run(host='127.0.0.1', port=5000, debug=True) ``` **Node.js 应用示例**: ```javascript const server = app.listen(3000, '127.0.0.1', () => { console.log('服务器运行在 http://127.0.0.1:3000'); }); ``` #### 方法 2:通过 VSCode 调试配置 在项目根目录创建/修改 `.vscode/launch.json` 文件: **Flask 配置**: ```json { "version": "0.2.0", "configurations": [ { "name": "Python: Flask", "type": "python", "request": "launch", "module": "flask", "env": { "FLASK_APP": "app.py", "FLASK_RUN_HOST": "127.0.0.1" // 关键设置 }, "args": ["run", "--no-debugger"] } ] } ``` **Node.js 配置**: ```json { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "启动程序", "program": "${workspaceFolder}/app.js", "args": ["--host", "127.0.0.1"] // 传递主机参数 } ] } ``` #### 方法 3:通过环境变量设置 在终端或 VSCode 设置中配置环境变量: ```bash # Windows set FLASK_RUN_HOST=127.0.0.1 # Linux/macOS export FLASK_RUN_HOST=127.0.0.1 ``` 或在 VSCode 的 `settings.json` 中添加: ```json { "terminal.integrated.env.windows": { "FLASK_RUN_HOST": "127.0.0.1" } } ``` #### 验证配置 启动应用后检查控制台输出: ``` * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) ``` 点击此链接或手动访问 `http://127.0.0.1:5000` 即可[^1]。 > **注意**:127.0.0.1 是 IPv4 的环回地址,与 localhost 等效但更精确。此配置仅允许本机访问,无法被局域网其他设备访问[^3]。 --- ### 常见问题解决 1. **访问被拒绝**: - 检查防火墙是否允许端口访问 - 确保没有其他程序占用相同端口 2. **配置生效**: - 重启 VSCode 使配置生效 - 检查是否有多个配置冲突 3. **跨设备访问需求**: 如需手机或其他设备访问,需使用 `0.0.0.0` 并配合内网穿透工具[^4][^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值