如何在RESTapi中捕获请求url/domain


How do I catch the request url / domain in my REST api?

这可能有一个简单的答案(我希望是这样),但在网上我只找到了如何获取当前URL/Domain的例子。不,我在哪里可以找到如何获得传入的http请求。

我的设置是一个RESTapi,用于处理典型的GET/POST/DELETE/PUT请求。我必须为客户端返回有关他们从中提取的域的域信息。因此,如果使用我的CMS的客户端点击信息,他必须接收有关他登录的域的信息(从而发送请求)。

我选择不在这里添加代码,因为我的问题与实际代码的关系不如与方法论的关系。提前感谢所有的答案!

在互联网上,每个地址都可能是伪造的(VPN、代理等)。这是网络的基本原理之一。

你永远无法在100%保修的情况下检测到,所以你可以拥有的最大值是$_SERVER['HTTP_REFERER']$_SERVER['REMOTE_ADDR']

你可以在保存/处理它之前对它的存在进行额外的验证,但这可能会花费你的服务器的一些额外性能。

如果您的目标是为某些方法/数据提供一些额外的访问规则,则应使用其他验证机制(令牌、密码等)。

print_r($_SERVER);

它可能对你有用

听起来好像您在寻找HTTP referer,它可以在PHP中通过$_SERVER['HTTP_REFERER']访问。

据我所知,没有可靠的方法来确定请求来自的域。也许你可以检查客户端的IP地址和/或HTTP referer,并将其与一组域匹配,。。。但在我看来,这不是100%安全的。

为API调用实现一个(可选)参数,该参数必须是域名,怎么样?

我最终在一个外部php文件中定义了一个密钥常量,该文件将在CMS中交付给客户端。(反正已经有一堆常量了)。

在服务器端,我将密钥放入数据库中,并在每个请求中比较这些密钥。这不是傻瓜式的,但我意识到我也可以将密钥用于其他功能,所以我还是实现了它。

将其与其他各种安全检查结合使用,我发现不必跟踪请求域。谢谢你们的回复!