如何将地理位置数据从浏览器发送到服务器

How to send Geolocation data from browser to server?

本文关键字:浏览器 服务器 置数据 位置      更新时间:2023-09-26

似乎我需要在浏览器中运行客户端函数,然后将纬度和经度发送到服务器中,例如,ajax调用,然后使用响应数据在页面上反映它?因此,我需要在服务器端添加一个新端点来管理这些请求?当用户加载某些页面时,不可能从传入请求中获取该数据吗?

正如您自己所说,地理位置是在客户端用Javascript运行的。当对服务器的第一个请求已经完成,HTML被传递给客户端并执行Javascript时,将执行此操作。因此,不可能在第一个请求中使用地理位置数据,原因很简单,因为该数据稍后执行。

在初始请求中可以做的是使用用户的IP来获得至少一个大致的地理位置。我认为总的来说,这是一个很好的做法,因为用户可能会拒绝或干脆忽略向您的网站提供地理位置数据。使用基于ip的方法,您至少可以有一个后备解决方案。

对于地理定位,您有两个解决方案。

一个是HTML5地理定位API。如果它存在(您可以使用Modernizr检查它),将位置数据(整个location对象)发送到服务器上的ajax脚本以及用户id或其他内容。

如果用户拒绝HTML5地理定位或使用旧浏览器,只需再次使用ajax端点,但使用空位置对象。检查它的服务器端,然后如果为空,检查头中的传入IP,然后使用GeoIP数据库定位您的用户(~ 40km左右的精度)。

这样你就有了一个客户端js和一个服务器端ajax脚本,它们一起工作来或多或少准确地定位你的用户,但总是定位;)

编辑:如果你想在第一页加载传入地理位置,只需从请求头中获取传入IP,使用GeoIP并获得您的用户地理位置;-)