iframe标签嵌套模块的坑

问题:

document.referrer 获取到的是 iframe 引入模块的 url,而非嵌套这个公共模块的外部 url 

解决历程:

现有一个页面,页面中通过 iframe 的方式引入了一个公共模块,如下:

<iframe src="/common/top_page.jsp" width="450" height="27" frameborder="NO" border="0" framespacing="0" scrolling="no" style="z-index:999;float:left;"></iframe>
  • 这个公共模块中有一个注册的按钮,点击后跳转到注册的页面,按照目前的逻辑是通过 document.referrer 的方式获取到来源页的,但是业务需要的是嵌套了top_page.jsp的主页面,但是通过以上的方式获取的 url 却是 top_page.jsp 
  • 通过百度才了解到:iframe 引入的这个页面会被当做一个独立的页面,而嵌套了它的外层页面只是它的来源页,也就说在 top.page.jsp 中通过 request.getHeader("Referer"); 的方式会获取到嵌套了它的外层页面
  • 大概了解了上边的问题,接下来就是另一个问题:那么以前的逻辑是怎样实现的?
  • 在这个页面中注册链接其实是一个 .jsp 的url,但是因为太卡了,之后修改成了一个新的页面(这个新的页面是一个前后端分离的-‘问题的关键’),然后是在服务端的nginx中对这个链接进行了重定向
  • 然后又去找了那个古老的注册页的 jsp,然后发现了问题的所在,注册按钮下的是一个点击事件,然后提交了一个表单,这个是个什么操作?(表单中key 为 req 的 value 值就是动态获取到的嵌套的外层页面 url,这里直接从页面中粘的 url):
    //点击事件触发
    <a href="#" onclick="ttttttt();">注册</a>
    
    //方法中提交的表单
    <form name="form2" action="http://center.XXX.com/register.jsp" target="_blank" method="post">
      		<input type="hidden" name="req" value="http://www.XXX.com/zzz.html">
      	</form>
    
    //方法
      	function ttttttt(){
    
      	    //这里有一些其他业务
    
      		document.form2.submit();
      	}
      

     之前的逻辑是怎样接收这个参数的呢?如下:

    String req=request.getParameter("req");
    

    上边是通过java代码获取的,但是现在跳转的页面是前后端分离的,我总不能再往页面中搞个Java代码获取一下这个值吧

  • 所以只有一个办法了,那就是在公共模块的jsp中,在注册提交的表单(上边的form2)的action属性,也就是跳转地址后拼接一个参数把这个 url 带过去,但是还有一个前提是要注意nginx在做重定向的时候是否会把后边的参数过滤掉

  • 至此记录一次前端遇到的问题,如有说的不对的地方,欢迎批评指正!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值