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条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)