该网站正在请求访问位置的权限,而位置访问是在客户端

The website is asking for a permission to access location, whereas the location access is in client side

让我们考虑这个 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 元素中写入用户的坐标

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

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

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

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

The question is, why the user's permission is needed here

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

the website will not actually access the user's location

当然会。 正是它请求许可的目的。即使您的代码在用户的浏览器中是 运行,它仍然是您的代码,用户可以选择您的代码是什么或不允许在他们的 computer/device.

上访问

but it is just printed on the user browser

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