如何获取访问服务器的域名

Posted

技术标签:

【中文标题】如何获取访问服务器的域名【英文标题】:How to get domain name who access the server 【发布时间】:2012-11-26 10:00:53 【问题描述】:

我正在创建一个 REST API,所以基本上一个 api 密钥只对一个域有效,

示例:api_key 0kjs9s9s9 仅对 mysite.com 有效

这是出于安全目的,因此 0kjs9s9s9 只能从 mysite.com 访问。

那么问题来了,如何获取访问该页面的域名? 当我打印时,print_r($_SERVER),我只得到一个关于谁在请求页面的信息,'REMOTE_ADDR',它是一个 IP。从某个地方阅读后,我发现我可以使用gethostbyaddr($_SERVER['REMOTE_ADDR']) 但我不确定这是正确的方法。 请任何人给我这个问题的示例代码。

如果 mysite.com 在代理和负载平衡器群下运行,会怎样?我会得到哪个IP?代理还是域?

有人可以用假域名发送请求吗?

提前致谢

【问题讨论】:

在谈论域时,您似乎是在谈论浏览器中的脚本?如果是这样,那么我认为您只能通过依赖一些 javascript 技巧来做到这一点,即使这样也可以使用服务器端调用来伪造它。在REST authentication and exposing the API key 上查看我的回答。对于服务器端请求,您需要询问 API 密钥的用户,该 API 将从哪个服务器 IP 地址使用。 【参考方案1】:

远程 IP 不一定会解析。代理和 NAT 设备可能会显示自己的 IP 地址;发起设备很可能没有公共 IP 地址,如果它自己的话。

【讨论】:

以上是关于如何获取访问服务器的域名的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp如何获取二级域名前缀然后跳转到其他的后缀

如何通过js获取当前访问页面的域名

asp如何获取当前网站的域名

1 域名获取+解析

java如何获取计算机域名

PHP如何获取目标域名的全部二级域名