我正计划一个URL重写器/编码器(也许重写器是一个更好的术语)。主要目的是从客户端隐藏确切的URL,因为如果他足够聪明,他可以弄清楚如何搞砸应用程序。URL编码的设计解决方案
URL编码器将是一个内射函数f(x) = y
。解码器将是f的反函数,比如g,使得g(y) = x
。这样我可以编码和解码我的网址。
的URL,如:
http://www.myapp.com/servlet/myapp/template/MyScreen.vm/action/MyAction 将被编码为类似:
http://www.myapp.com/uyatsd6787asv6dyuasgbdxuasydgb876876v
不要紧,什么是在编码的URL,只要它是不理解。
问题是我不知道如何操作浏览器显示的URL。我将JBoss用作servlet容器,并将Turbine servlet用作Web应用程序框架。 我需要一个接收编码的URL,解码它,将它传递给Turbine的模块,然后修改响应的URL以再次显示编码的URL。
以前曾试图解决这个问题: 我创建了一个Servlet过滤器,但由于滤波器接收一个ServletRequest是一个JBoss实现我无法访问URL。据我看来,似乎servlet过滤器不是一个好的选择来操纵URL。
着如果我在内部解码后的URL会的浏览器中的URL仍然是原始的(编码的)? – Atticus 2010-09-15 13:39:51
浏览器的URL应该保持不变,因为您的serlvet正在内部转发,而不是将重定向发回给用户。 – worpet 2010-09-15 16:01:02
这似乎是一个很好的解决方案,但是你必须创建一个新的请求,因为在第一次请求之后,Turbine servlet将知道它的url模式,并且所有链接都将指向Turbine servlet。因此,您必须创建一个新的包装请求来重写getServletPath()方法,以返回新的让我们说过滤器servlet的url模式,它将请求转发到正确的目标。 – Atticus 2010-09-16 08:27:39