获取请求服务器的主机名称
说我有2个不同的网站。获取请求服务器的主机名称
- sampledomain1.com(包含资源要取)
- sampledomain2.com(实现的Apache HttpClient的,以作出获取资源Get请求从sampledomain1.com
我需要做确定sampledomain1.com
只提供信息给sampledomain2.com
而没有其他人为此sampledomain1.com
需要找出什么是请求服务器的主机名,这意味着,sampledomain1.com
应该读取请求来自sampledomain2.com
我们如何知道?
试试这个:
$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
exit;
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if(req.getRemoteHost().endsWith("sampledomain1.com") || req.getRemoteHost().endsWith("sampledomain2.com")) {
// ... code goes here.
}
}
您可以使用HttpServletRequest.getRemoteAddr()
或HttpServletRequest.getRemoteHost()
检索调用者的详细信息。也许你应该使用防火墙或者阀门(http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Remote_Host_Filter)(或者应用服务器前的Apache HTTPd服务器)来执行过滤,但这取决于你的环境。
请您详细说明防火墙或阀门的含义。我正在使用nginx。 – Abhi 2014-09-11 11:50:49
在您的服务前放置(使用)防火墙,该防火墙仅允许来自允许源的数据包。您也可以通过指定IP地址/范围,使用nginx(http://nginx.org/en/docs/http/ngx_http_access_module.html)执行此操作。如果您将Tomcat用于应用程序服务器,则可以添加过滤器(请参阅链接)以允许/拒绝特定主机。 – mp911de 2014-09-11 11:56:36
好吧,我明白了。很好的建议,谢谢。 – Abhi 2014-09-11 12:09:14
问题是与Java有关,而不是PHP – mp911de 2014-09-11 11:26:32