我正在为一项服务编写API,现在我需要限制一些URL的调用。假设您是用户,并且您选择只有stackoverflow.com可以看到您的信息,或者stackoverflow.com,facebook.com和google.com无法看到您的信息。
我在后端有系统(白色与黑色列表),但现在我需要找到一种从呼叫中获取URL的方法。
是的,有些人会使用curl,这很容易,但是很多人只会使用file_get_contents(),而且这个API有图像输出所以有些人会用
<img src="http://domain.com/api/something.jpg" />
有没有想过如何获取网址,而不让开发人员将网址实际编码为调用网址?
由于
答案 0 :(得分:0)
检查请求客户端的IP地址($_SERVER['REMOTE_ADDR']
)。您可以将允许连接到API的服务器的IP地址列入白名单。对于图像输出,您可以使用$_SERVER['HTTP_REFERER']
并确保它来自您已列入白名单的域。
但是,我不建议这样做。您应该使用API密钥。这些就像使用您的API给客户的密码。只有拥有API密钥的用户才能访问您的API。同时,当他们的服务器更改IP地址时,他们仍然可以访问您的API。