【问题标题】:The website is asking for a permission to access location, whereas the location access is in client side该网站正在请求访问位置的权限,而位置访问位于客户端
【发布时间】:2022-01-07 12:53:49
【问题描述】:

让我们考虑这段 javascript 代码:

if (navigator.geolocation){
  navigator.geolocation.getCurrentPosition(function(position) {
    document.getElementById('id111').innerHTML="latitude: " + position.coords.latitude + "<br>longitude: " + position.coords.longitude;
  });
}

它首先检查navigator.geolocation 对象是否可用,如果可用, 并在 id 等于 id111 的 HTML 元素中写入用户的坐标。

为了做到这一点,包含此代码的网站会询问用户 获得访问他自己位置的权限。

问题是,为什么这里需要用户的许可,而代码是客户端的,所以网站实际上不会访问用户的位置,而只是打印在用户浏览器上?

【问题讨论】:

    标签: javascript location navigator


    【解决方案1】:

    问题是,为什么这里需要用户的许可

    因为您要求提供私人信息。一些用户可能不希望您知道他们的实际位置,并且可能选择不分享。浏览器地理定位 API 标准强制执行此操作。

    网站实际上不会访问用户的位置

    肯定会的。这正是它要求允许这样做。即使您的代码在用户的浏览器中运行,它仍然是您的代码,用户可以选择您的代码在他们的计算机/设备上可以访问或不允许访问。

    但它只是打印在用户浏览器上

    浏览器不知道也不关心是否是这种情况。浏览器不关心您对用户的私人信息做了什么,只关心您在访问该私人信息之前获得用户的许可。您可以将其显示在屏幕上,将其发送到服务器等。但首先您需要用户的许可。

    【讨论】:

      【解决方案2】:

      代码可能在客户端运行,但它由用户碰巧访问的任何网站提供。

      一旦代码有了位置,就没有什么可以阻止它了,例如,发出 Ajax 请求将其发送到服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-02
        • 2018-03-02
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        • 1970-01-01
        • 2022-08-09
        • 2018-02-15
        相关资源
        最近更新 更多