当前位置:编程学习 > JAVA >>

servlet跨域跳转问题

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

sendRedirect 是浏览器端跳转,必然浏览器知道目标地址。
dispatcher.forward 是服务器端跳转,但必须得在同一个域中。


唯一可实现类似效果的是:反向代理,也即servletA代替浏览器请求servletB,然后读取结果,并将结果返回给浏览器端。 --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了。 --------------------编程问答--------------------
引用 2 楼 ldh911 的回复:
跳转的模式下,是不可能做到的。

sendRedirect 是浏览器端跳转,必然浏览器知道目标地址。
dispatcher.forward 是服务器端跳转,但必须得在同一个域中。


唯一可实现类似效果的是:反向代理,也即servletA代替浏览器请求servletB,然后读取结果,并将结果返回给浏览器端。

+1 这个是不是相当于跨域forward,实现起来可能有点小复杂,不知道为何它原生没有支持 --------------------编程问答--------------------
引用 5 楼 dracularking 的回复:
+1 这个是不是相当于跨域forward,实现起来可能有点小复杂,不知道为何它原生没有支持


代理往往都是有专用代理服务器,纳入J2EE原生能力不太合适,不过有开源包来做倒是真的。

另外也可以在独立的应用 A 和 B 之前增加Apache反向代理来对浏览器隐藏其域的差异性。 --------------------编程问答-------------------- 用iframe试试呢。 --------------------编程问答--------------------
引用 6 楼 ldh911 的回复:
引用 5 楼 dracularking 的回复:
+1 这个是不是相当于跨域forward,实现起来可能有点小复杂,不知道为何它原生没有支持

代理往往都是有专用代理服务器,纳入J2EE原生能力不太合适,不过有开源包来做倒是真的。

另外也可以在独立的应用 A 和 B 之前增加Apache反向代理来对浏览器隐藏其域的差异性。

servlet如果直接提供一个方法,比如forwardToAnotherDomain(URL); 这个和代理没关系了吧 --------------------编程问答--------------------
引用 8 楼 dracularking 的回复:
servlet如果直接提供一个方法,比如forwardToAnotherDomain(URL); 这个和代理没关系了吧


不能实现楼主要的核心效果啊:
    浏览器不知道你做了forward,地址栏仍然是之前的地址。 --------------------编程问答-------------------- forward  不可以跨域访问 --------------------编程问答--------------------
引用 9 楼 ldh911 的回复:
引用 8 楼 dracularking 的回复:
servlet如果直接提供一个方法,比如forwardToAnotherDomain(URL); 这个和代理没关系了吧

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

楼主貌似要的就是之前的地址(隐藏ServletB的真实地址) --------------------编程问答-------------------- 不能直接在js里实现么? --------------------编程问答--------------------
引用 2 楼 ldh911 的回复:
跳转的模式下,是不可能做到的。

sendRedirect 是浏览器端跳转,必然浏览器知道目标地址。
dispatcher.forward 是服务器端跳转,但必须得在同一个域中。


唯一可实现类似效果的是:反向代理,也即servletA代替浏览器请求servletB,然后读取结果,并将结果返回给浏览器端。

求解答 什么叫跨域  还有反向代理 求科普
--------------------编程问答--------------------
引用 12 楼 meichen8050753 的回复:
不能直接在js里实现么?

在IE上面,JS 跨越访问也要IE设置才行,默认不允许。 --------------------编程问答-------------------- 有个简单的办法,你在本地写一个Servlet    然后 实现 Http请求(HttpClient)将请求应答的结果 在本地生成一个jsp 然后Servlet    返回JSP ok实现 了 --------------------编程问答-------------------- 请问你是怎么用eclipse运行servlet
为什么我都运行不了
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,