javascript - 如何检测客户端站点中的浏览器国家?

标签 javascript html browser navigator

我发现以下网站即使在隐私模式下也能检测到我的国家和货币

http://www.innisfreeworld.com/

它记录在cookie中,它是怎么做到的?

enter image description here

这可能在客户端实现吗?导航器?

最佳答案

有多个选项可以确定语言环境。按照有用性降序排列,这些是:

  1. 查找IP地址with an IP geolocation service喜欢Maxmind GeoIP .这是请求的来源位置,即如果美国人在意大利度假并使用瑞典 VPN,它将返回 Sweden

只能在服务器的帮助下完成。主要优点是它非常可靠。免费服务的准确度为国家或地区,付费服务的准确度为城市或地区。

  1. 使用 geolocation API 从浏览器中查找地球上的精确位置.使用瑞典 VPN 在意大利度假的美国人将注册为意大利。

答案会很精确,一般不超过10m。原则上,它可以在客户端工作,尽管您可能希望在服务器上执行坐标 -> 国家/地区查找。主要缺点是并非所有设备都具有 GPS 或 WiFi 位置,并且通常需要明确的用户同意。

  1. 查看 Accept-Language服务器上的 header (或在服务器的帮助下),并提取语言环境信息。使用瑞典 VPN 在意大利度假的美国人将注册为美国。

缺点是这是一个非常容易更改的设置。例如,世界各地的英语使用者可能更喜欢 en-US 设置以避免机器翻译的文本。在现代浏览器上(写作时不是 IE/Edge,只有 Safari 11+),你也可以请求 navigator.languages .

  1. navigator.languagenavigator.languages header 的第一个元素。 navigator.languages 的所有注意事项都适用。最重要的是,此信息有时可能只是没有任何区域设置的语言(即 en 而不是 en-US)。

  2. 使用其他第三方服务。例如,如果用户通过 Facebook 连接等单点登录系统登录,您可以请求用户的家乡。此信息通常非常不可靠,需要第三方。

关于javascript - 如何检测客户端站点中的浏览器国家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48278024/

相关文章:

javascript - 为什么 Jquery 对话框在 $(this) 上不断崩溃?

javascript - 如何为使用 Raphael JS 绘制的矢量路径制作动画?

javascript - 在 Bootstrap 标签输入中显示表单值

html - IE10 img onerror 始终有效

browser - 实时服务器 Visual Studio Code 浏览器不会自动更新

javascript - 传递值以仅打印、pdf 预览或在 excel 中打开

html - 文本旁边垂直居中图标

javascript - overflow-x 在 Jquery 中动态生成的 DIV 中不起作用?

javascript - 算法:如何划分网格列宽(如google-chrome)

php - 我如何将 – (endash) 更改为 | (垂直条)在我的浏览器中?