现在有一个servlet A用redirect方式跳向另外一个servlet B,两个servlet不在同一个域,然后,B用forward跳转所在应用的jsp页面,这样这张页面地址栏里就有B所在域的地址,现在为了安全起见,有没有办法把地址隐藏掉,或者在A跳向B的时候不用redirect方式,因为用redirect的话地址也会跟着变~不知道我有没把问题说清,初出茅庐啊,各位大神说有没可能实现?

解决方案 »

  1.   

    可不可以考虑后台~~~URL访问呢!!!
        不考虑跨域的问题!
      

  2.   

    跳转的模式下,是不可能做到的。sendRedirect 是浏览器端跳转,必然浏览器知道目标地址。
    dispatcher.forward 是服务器端跳转,但必须得在同一个域中。
    唯一可实现类似效果的是:反向代理,也即servletA代替浏览器请求servletB,然后读取结果,并将结果返回给浏览器端。
      

  3.   

    +1 这个是不是相当于跨域forward,实现起来可能有点小复杂,不知道为何它原生没有支持
      

  4.   


    代理往往都是有专用代理服务器,纳入J2EE原生能力不太合适,不过有开源包来做倒是真的。另外也可以在独立的应用 A 和 B 之前增加Apache反向代理来对浏览器隐藏其域的差异性。
      

  5.   

    servlet如果直接提供一个方法,比如forwardToAnotherDomain(URL); 这个和代理没关系了吧
      

  6.   


    不能实现楼主要的核心效果啊:
        浏览器不知道你做了forward,地址栏仍然是之前的地址。
      

  7.   

    forward  不可以跨域访问
      

  8.   

    楼主貌似要的就是之前的地址(隐藏ServletB的真实地址)
      

  9.   

    在IE上面,JS 跨越访问也要IE设置才行,默认不允许。
      

  10.   

    有个简单的办法,你在本地写一个Servlet    然后 实现 Http请求(HttpClient)将请求应答的结果 在本地生成一个jsp 然后Servlet    返回JSP ok实现 了
      

  11.   

    请问你是怎么用eclipse运行servlet
    为什么我都运行不了