uuussseeennn 2011-08-14 09:20
浏览 441
已采纳

如何用JAVA实现这样一个简单的URL转发应用

需求:
用户在外网访问一个网站如www.sample1.com,此网址会将请求转发到我指定IP的机子上,这台机子在收到请求后,需要判断此网址,然后重定向到另一个网站如www.sample2.com,最终用户打开的是www.sample2.com这个网站。

这样一个简单需求,我尝试过通过域名服务商提供的域名管理功能完成域名转发,但这个功能他们说被政府禁了,完成不了,于是做A记录,将网址 1(www.sample1.com)解析到指定IP的服务器,通过这个服务器再做转发的工作,这就是整个需求的背景。(不知这个背景是否问题:))

现在主要想解决服务器端的问题,目前有下面几种解决方案:
1:部署APACHE
2:用JAVA程序监听80端口,然后在收到请求后,发送另一个网站的网址给用户

我现在更倾向于第2种解决方案,但不知道用JAVA的什么包来做,怎么判断来访的域名,然后重定向到另一个网址。如有其它更简单方便的解决方案,也请告知,谢谢!

  • 写回答

2条回答 默认 最新

  • wks1986 2011-08-14 10:09
    关注

    用户访问的时候,HTTP头的Host字段是用户想要访问的域名。

    如果要重定向,向用户返回HTTP 301状态。然后,用HTTP头的Location字段向用户提供新的URL。

    如果是Servlet,可以用HttpServletRequest.getHeader("Host")得到用户请求的域名。如果等于www.sample1.com,就执行重定向。

    用HttpServletRequest.getRequestURL()获得请求的URL。不过这个URL不含query部分(问号后面的部分),用getQueryString()获得。然后,用java.net.URI类重新构造这个URL,修改host部分,改成www.sample2.com。得到新的URL后,发给用户就行了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?