修改Hosts不生效的一个场景-web 专题
准备工作
1、在 QQ互联 申请成为开发者,并创建应用,得到APP ID 和 APP Key。
2、了解QQ登录时的 网站应用接入流程。(必须看完看懂)
为了方便各位测试,直接把我自己申请的贡献出来:
APP ID : 101386962
APP Key:2a0f820407df400b84a854d054be8b6a
回调地址:http://chaojihao.net/login/qq
提醒:因为回调地址不是 http://localhost ,所以在启动我提供的demo时,需要在host文件中添加一行:
127.0.0.1 chaojihao.net
Github 地址
https://github.com/ChinaSilence/any-spring-security.git
运行应用
1、进入 security-oauth2-qq 目录,执行:
mvn spring-boot:run
2、此处假设你已经修改好host,并启动成功,访问 http://chaojihao.net
3、删除host中添加的那一行。
相关说明
腾讯官网原话:
openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。
通过QQ登录获取的 openid 用于与自己网站的账号一一对应。【也就是讲,获取不到qq号喽】
tips:
win10中的host文件:
C:\Windows\System32\drivers\etc
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
Update:
- 如果浏览器使用了代理工具,修改 Hosts 也不会生效。这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件、SwitchySharp等)的代理,建议调试的时候先关闭这些代理。
- 使用 pac 文件代理有的时候部分文件的代理不生效,应该是 pac 对应的代理服务器上,做了部分处理。
- 部分浏览器也有 DNS 缓存,如 chrome(chrome://dns),这是为什么重启浏览器也不生效的原因,一般设定时间为 60s (如 Firefox)。
- 浏览器有DNS缓存,系统也会存在 DNS 缓存,有的时候即便在 chrome://dns 清空了浏览器 DNS 缓存,依然不生效,是因为系统 DNS 缓存还未刷新,刷新方式可以看这篇文章。
相信很多同学都在使用 SwitchHosts/iHosts/Gas Mask 等 Hosts 管理工具,当然也有人直接修改 /etc/hosts
或者 system32/drivers/etc/hosts
文件,而经常遇到的疑问是:咿,刚才不是修改并且保存了么,为何 Chrome 浏览器还不生效呢?
- 有人说重启下浏览器就好了,
- 有人说清空下缓存 DNS(chrome://net-internals/#DNS)就好了,
- 有人说隐私模式下打开就好了,
- 有人说等一分钟吧...
结果就是,进入隐私模式的都好了,重启、清空缓存DNS和等一分钟的同学还在继续纠结中。。。
上面提到的三个工具,SwitchHosts/iHosts/Gas Mask,其实也只有 iHosts 生效了(Mac下)。
开发过程中我们会无数次的切换 Hosts,如果不知道原理,我们在测试的时候还是很心惊胆战的=_=||
修改Hosts不生效的根本原因
因为服务器设置了 keep-alive
!次要原因是存在浏览器 DNS 缓存和系统 DNS 缓存。
> Keep-alive 相关文档
服务器在响应头设置了 Connection: keep-alive
(一般的网页都会设置 keep-alive,保持长连接,避免多次连接产生网络消耗)之后,客户端会跟服务器保持长连接,只要长连接不断开,页面在请求的时候就不会重新解析域名!
我们可以这样来测试:
- 打开一个你至少两分钟没有打开的浏览器(你也可以关闭掉你的浏览器,然后重新打开,记得把所有的 tab 都关了,除了当前 tab ^_^)
- 在 hosts 添加
127.0.0.1 www.taobao.com
- 新开 tab,打开 www.taobao.com,是不是进不去了 <这里说明 hosts 修改生效了>
- 注释掉刚才hosts修改,
# 127.0.0.1 www.taobao.com
,再打开 www.taobao.com,很好,正常打开了 <这里说明 hosts 修改也生效了> - 去掉注释符,
127.0.0.1 www.taobao.com
,再打开 www.taobao.com,依然可以访问!!! - Chrome 中进入 chrome://net-internals/#sockets,
,可以看到淘宝首页中很多域名都是与服务器保持着长连接,点击上方的
close idle sockets
按钮,可以关闭所有的长连接 - 此时,再去访问 www.taobao.com,是不是进不去了!
为何一些修改可以让 “Hosts 生效”
1. 重启浏览器
重启浏览器之后,所有的连接(包括长连接)都会断开,自然就生效了
2. 隐私模式打开
因为隐私模式下不会复用 TCP 连接,新开连接的时候,会重新解析 DNS 域名,自然也生效了
3. iHosts 管理器在 Mac 下生效
因为我在 Windows 下测试过,貌似没有立即生效。问了 iHosts 的作者@必隆,他告诉我,在修改 hosts 文件的时候,会重启网络服务,这个时候必然会断开所有的 TCP 连接(重启网络服务,差不多相当于先断网再联网...)
4. 修改之后,等一会儿...
“等一会儿”,要稍微等久一点,keep-alive
的默认设置是 120s,开发者也有可能增大或者减小这个配置,所以“等一会儿”也是很伤神的=。 =
看到这里,你对其中的原理是否有所了解了呢?
http://www.cnblogs.com/hustskyking/p/hosts-modify.html
修改Hosts不生效的一个场景-web 专题的更多相关文章
- 修改Hosts不生效的一个场景-web(转)
Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. ...
- 修改hosts立刻生效不必重启
有时我们会通过修改Hosts文件(路径为系统盘:\WINDOWS\system32\drivers\etc\hosts),在修改并保存Hosts文件后需要重启才能使设置生效. 这时可以打开命令提示符 ...
- 缓存:修改Hosts不生效
修改Hosts为何不生效,是DNS缓存? - Barret李靖 - 博客园https://www.cnblogs.com/hustskyking/p/hosts-modify.html 换个未打开过的 ...
- 修改Hosts为何不生效,是DNS缓存?
Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. ...
- 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法
本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...
- 修改hosts文件后不生效,该怎么办
对于web开发来说,经常需要修改hosts文件,用来将域名与ip对应匹配.但是有时候发现hosts文件明明已经改了,但就是不生效,页面还会跳到某个丧心病狂的私人小站.hosts文件不生效有很多种原因, ...
- 修改hosts文件,修改后不生效怎么办
当你在打开浏览器的情况下修改hosts文件时,关闭浏览器时系统才会释放掉hosts文件占用的那部分内存,我们再次打开浏览器访问就发现已经生效了. ps:ipconfig /flushdns # ...
- docker for mac的JSON配置文件中的hosts项修改后无法生效
docker for mac的JSON配置文件中的hosts项修改后无法生效 docker 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地 增 ...
- OS X 系统,修改hosts文件后不生效的问题
系统版本 OS X El Capitan,10.11.2 问题描述 业务需要,配置“nexus”为某个ip,如下图更改了 /etc/hosts 文件. 结果在ping的时候,请求并未发到指定ip上. ...
随机推荐
- 证明的手段 —— 不失一般性的(WLOG)
不失一般性是数学中一个常见的表达.不失一般性(Without loss of generality,缩写:WLOG.WOLOG 或 w.l.o.g.)是数学中一个常见的表达. 如果给不相等的两数,a, ...
- 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【cocos2dx 3.2】瓦片地图制作
使用Tiled编辑地图 每个图层仅仅能放一种瓦片 瓦片的大小最好是32*32的倍数 对象层里面设置路径的坐标 主程序中获取对象层中的坐标,做对应的操作 设置口袋精灵类: Monster.h #incl ...
- 【Windows Defender Antivirus Service 永久禁用 】
cmd 管理员运行 执行 reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender” /v “DisableAn ...
- js进阶 9-10 html控件如何实现点击自动选择控件内容
js进阶 9-10 html控件如何实现点击自动选择控件内容 一.总结 一句话总结: 1.在click事件中,如果focus,那就select 2.blur 1.html中控件添加两种方式? 在表单 ...
- Redis的常识
https://github.com/springside/springside4/wiki/redis 1. Overview 1.1 资料 <The Little Redis Book> ...
- 关于Dagger 2的文章汇总
首先是我真正看懂了的第一篇文章 代码GG之家的 Dagger2图文详解 这篇文章很直接,还配有代码demo.至少我是看懂了. Dagger2 使用详解 这篇文章同样配有demo,同时文末还有很多有用的 ...
- hadoop 3.x Replication与Availability不一致
看下面的文字前先确保你的Replication值不大于你设置的虚拟机数量 如图,显示的副本数为3,但是实际可用的只有一台机器,查看了下hadoop003,hadoop004两台机器,果然没有存储数据, ...
- 深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地
相信很多软件开发人员们对今年国内新兴的云端开发工具——华为软件开发云都有耳闻,有些人可能还免费体验过,由于它5人以下的团队是免费使用的,很庆幸本人的这个项目正好5个人,就注册使用了.下面就自己的使用心 ...
- NET媒体文件操作组件TagLib
开源的.NET媒体文件操作组件TagLib#解析 人生得意须尽欢 莫使金樽空对月.写博客都会在吃饭后,每次吃饭都要喝上二两小酒,写博客前都要闲扯,这些都是个人爱好,改不掉了,看不惯的人,还望多多包 ...