如何将地理位置数据从浏览器发送到服务器
How to send Geolocation data from browser to server?
似乎我需要在浏览器中运行客户端函数,然后将纬度和经度发送到服务器中,例如,ajax调用,然后使用响应数据在页面上反映它?因此,我需要在服务器端添加一个新端点来管理这些请求?当用户加载某些页面时,不可能从传入请求中获取该数据吗?
正如您自己所说,地理位置是在客户端用Javascript运行的。当对服务器的第一个请求已经完成,HTML被传递给客户端并执行Javascript时,将执行此操作。因此,不可能在第一个请求中使用地理位置数据,原因很简单,因为该数据稍后执行。
在初始请求中可以做的是使用用户的IP来获得至少一个大致的地理位置。我认为总的来说,这是一个很好的做法,因为用户可能会拒绝或干脆忽略向您的网站提供地理位置数据。使用基于ip的方法,您至少可以有一个后备解决方案。
对于地理定位,您有两个解决方案。
一个是HTML5地理定位API。如果它存在(您可以使用Modernizr检查它),将位置数据(整个location
对象)发送到服务器上的ajax脚本以及用户id或其他内容。
如果用户拒绝HTML5地理定位或使用旧浏览器,只需再次使用ajax端点,但使用空位置对象。检查它的服务器端,然后如果为空,检查头中的传入IP,然后使用GeoIP数据库定位您的用户(~ 40km左右的精度)。
这样你就有了一个客户端js和一个服务器端ajax脚本,它们一起工作来或多或少准确地定位你的用户,但总是定位;)
编辑:如果你想在第一页加载传入地理位置,只需从请求头中获取传入IP,使用GeoIP并获得您的用户地理位置;-)
相关文章:
- 如何:浏览器将JSON发送到服务器
- CORS-服务器端cookie没有保存在chrome浏览器上
- 如何通过ajax将png图片从服务器发送到浏览器中显示
- JSON-从浏览器向外部服务器发送哪些http头JSON文件
- 多人游戏完全在浏览器中运行,服务器仅用于数据库
- Node.js服务器和浏览器之间共享二进制缓冲区
- Node.js服务器问题-已添加“/"在浏览器中查找文件时
- 在浏览器中打开文本文件-服务器上出现错误
- 从服务器返回exe文件,并通过浏览器在客户端下载
- 将web浏览器客户端输入传递给服务器Java源代码
- 使用HTML和任何服务器端语言(PHP,.net,ruby)制作的网站是否可以在每个具有浏览器的设备上工作
- 使用服务器路由响应路由器浏览器历史记录
- 从服务器获取并传递给浏览器以在 Javascript 中格式化的日期时间格式
- 如何在没有JQuery的情况下,通过对服务器的基本ajax调用,根据浏览器上的用户活动保持服务器会话活动
- 如何执行“;“同步”;javascript调用服务器而不锁定浏览器
- 如何在注销后从服务器重新加载angular应用程序,而不使用浏览器缓存
- Javascript:在调用服务器时防止浏览器冻结
- 何时在浏览器中设置来自服务器的cookie响应
- 获取时间将图像从服务器加载到浏览器
- 通过浏览器/服务器语言实现html元素结构的最佳方式