为啥服务器端地理位置检测优于客户端 API 调用?

Posted

技术标签:

【中文标题】为啥服务器端地理位置检测优于客户端 API 调用?【英文标题】:Why server side geo location detection is preferred over client side API call?为什么服务器端地理位置检测优于客户端 API 调用? 【发布时间】:2017-11-04 14:36:14 【问题描述】:

我需要在我们的网站上实施地理位置检测。 (我需要计算状态变量并将其传递给谷歌标签管理器,将来这个变量可能会在服务器端用于根据状态呈现特定的块,但现在它只需要在客户端用于 GTM)

我发现this article 很有帮助。这是检测天气的一个更复杂的例子。我只需要地理位置。 在文章中,作者给出了客户端 API 调用的示例,但他多次建议完全使用服务器端调用。

对于那些想认真对待这个天气分析的人,我真的 建议迁移到 100% 的服务器端解决方案,其中天气 在呈现页面本身之前轮询数据,并且数据是 写在页面的dataLayer中。

如果您认真对待此解决方案,您可能需要安装一个 地理定位服务在您自己的网络服务器上,这样您就可以避免 需要在客户端进行任何额外的 API 调用。

所以似乎服务器端检测更好,但我真的不明白为什么。谁能解释一下。

【问题讨论】:

【参考方案1】:

一个给定的原因是安全性 - 如果您通过 javascript 查询商业 API 并在您的请求中传递 API 密钥,其他人可能会自费使用它。

同样使用 JavaScript,您必须发出请求,然后等待响应,然后才能继续呈现您的页面。使用服务器端解决方案,当浏览器呈现页面时,查询、错误处理等已经完成;您也可以将请求缓存到您的 API 以降低成本并加快交付速度。

【讨论】:

以上是关于为啥服务器端地理位置检测优于客户端 API 调用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在服务器端和客户端调用 recv 和 send 函数时都使用客户端的文件描述符?

为啥在 API > 23 中不调用 FusedLocationApi (onLocationChanged)?

Keepalive服务器端?

服务端进程被杀掉,tcp连接处于FIN_WAIT2状态,为啥客户端调用socket发送数据还是成功的。

怎么保护API接口只给特定的客户端使用?

为啥我的 REST API 客户端需要 JSONP 请求?