学习目标
阅读本文后,您将能够:
- 分开时区、语言和 Locale 三件事
- 解释语言、时区为什么可以和 IP 国家不同
- 避免把地区不一致直接看成异常身份
这三项各是什么
三项都来自浏览器的区域设置,问的问题并不相同。
时区回答「现在按哪里的钟点计算」。出差、远程、系统里手动改过时区,都会让它和人当时所在的城市不同。
语言回答「页面优先显示哪种语言,备选是什么」。一个人可以在国外上网,浏览器仍然使用自己的语言。
Locale 回答「日期、数字、排序按哪套地区习惯」。它常常跟着语言走,但也可以单独设置。
它们和 IP 所在地
IP 说的是这次请求从哪条网络出来。时区和语言说的是浏览器怎么设置。两套信息不必相同。
语言和 IP 国家不同很常见:人在海外,界面仍是中文。只凭这一点,看不出更多身份。
时区和网络出口有时会被放在一起看,因为两边都带「地点」的意味。人移动了、出口换了、或者只是改了系统时区,都会让两边暂时对不上。对不上本身只说明两套位置信号不一致。
为什么后面还要反复用到它们?
账号环境里,浏览器地区和网络出口是不是一套,是后续判断的一部分。先分清这三项各自回答什么,才不会把「语言不是出口国家」读成一个单独的结论。
不一致说明什么
- 语言和 IP 国家不同,可以只是界面语言,不是异常。
- 时区和网络位置不同,只说明两套地点信号对不上。
- 这些设置用户可以自己改,所以它们不是固定身份。
- 区域信号要和浏览器、网络方面的其他信息一起看,不能单用。
常见问题
网站能从时区知道我住在哪条街吗?
不能。时区通常只到一个时区名,例如某个城市或地区,不是街道地址。
把系统语言改成英语,指纹会整个换掉吗?
语言和相关格式会变。屏幕、渲染、浏览器声明不会因此全部改变。
Locale 和语言是同一个字段吗?
不是。语言决定优先显示哪种文字。Locale 决定日期、数字这类格式按哪里的习惯。