【发布时间】:2011-10-20 06:40:02
【问题描述】:
我正在构建一个 API,并且有一个关于如何跟踪/了解哪些域使用调用的问题。
API 调用是在 PHP 中构建的,不需要任何身份验证。用户很可能会在其服务器上的 AJAX 调用中使用 API。
例如,我提供 API PHP 文件的域称为 dev.yourmapper.com。域 www.metromapper.org 上的某个人构建了一个页面,该页面创建了一个 Google 地图,并使用 Ajax 调用我的文件以将我的数据覆盖在他们的地图上。
下面是这个例子:http://www.metromapper.org/example/apitest.htm
(单击中心地图标记以查看适用于 yourmapper.com 脚本的所有 PHP 服务器变量的弹出窗口。)
请注意,如果您单击链接,HTTP_REFERER 可能会是“stackoverflow.com”(如果您剪切并粘贴链接,则为空)。我认为引用者将是 metromapper.org,因为该域在加载后调用 yourmapper.com 脚本,但显然不是。
底线:我可以使用什么方法来确定哪个域正在使用 Javascript 调用我的 yourmapper.com 脚本?如果需要,我可以使用 PHP 以外的其他语言。谢谢。
【问题讨论】:
-
从某人刚刚留下的评论中,他们建议使用 REMOTE_HOST 和 REMOTE_ADDR,您可以在标记弹出窗口中看到。原来这是 Google 的 IP 地址,这是我的 yourmapper.com 数据在被 Google 提供之前所在的位置。 whatismyipaddress.com/ip/74.125.75.3 所以可能无法获取原始页面的 IP/域....
-
从上面不清楚你的API是从服务器调用还是从地图所在的网页调用(例如通过JSONP,绕过为页面提供服务的服务器)。如果是后者,你可能可以将 Javascript 所在页面的 URL(
window.location)附加到您的 ajax 调用中。 -
@chris-carson 我在 dev.yourmapper.com 的 API 可以从任何人的网页(如 metromapper.org)调用。 API 可以将数据作为 JSON 提供,但在这种情况下,它作为 KML 提供以直接覆盖在地图上。由于我无法控制其他人的 Javascript 代码,因此我无法强制他们将
window.location添加到 KML 请求中。