2011-11-18 40 views
0

我有一个API服务器,我想实现一个私人API密钥。公共API密钥背后的想法是在Web应用程序的javascript应用程序ajax调用中使用它们。为了充分验证我想确保其来自的域名位于受信任域列表中的密钥。PHP:如何获得ajax请求的主机?

我该如何获得这种呼叫的主机名?

回答

1

您的API服务器会检查$_SERVER['REMOTE_ADDR']。这会让你获得客户的IP。如果您正在进行基于主机名的过滤,则必须执行反向DNS查找以将该IP映射回主机名(例如),但并非所有IP都具有定义的反向映射。

+0

谢谢你的回答!这是否适用于Ajax调用?我正在使用gethostbyaddr,但不会$ _SERVER ['REMOTE_ADDR']是客户端(用户而不是服务器)的IP? PHP文档中提到了REMOTE_ADDR“用户正在查看当前页面的IP地址”。 http://php.net/manual/en/reserved.variables.server.php。然后,我将为用户获取IP,并且不会得到有效的域,即使我针对IP地址进行验证,我也没有有效的IP。我是对的?还是有什么我失踪? – Onema

+0

ajax调用只是在浏览器的后台完成的普通http调用。 ajax调用和常规的“点击链接”或“提交表单”请求之间没有服务器端差异。您仍然可以获取用户机器的IP或者他们正在经过的NAT网关(例如,他们的家庭DSL /电缆调制解调器/路由器)。 –