获取请求服务器的主机名

时间:2014-09-11 11:15:20

标签: java java-ee servlets

说我有2个不同的网站。

  1. sampledomain1.com(包含要获取的资源)
  2. sampledomain2.com(实施Apache HttpClient以获取从 sampledomain1.com
  3. 获取资源的Get请求

    我需要确保sampledomain1.com仅向sampledomain2.com提供信息,而不是其他任何人。为此sampledomain1.com需要找出请求服务器的主机名。这意味着sampledomain1.com应该读取该请求来自sampledomain2.com

    我们怎样才能找到答案?

2 个答案:

答案 0 :(得分:1)

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服务器)来执行过滤,但这取决于您的环境。

答案 1 :(得分:0)

试试这个:

$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;