使用Iframe+Post请求的方式嵌入第三方页面

2023-11-08

背景描述

本身我们有自己的一个系统,之后采购了一个新系统,新系统的页面要嵌入到我们自己系统页面来,两个系统之间的权限交互通过token来进行传递和认证。本身嵌入采用如下方式就非常简单了,就是常规的iframe嵌入页面的方式

//常规的iframe嵌入页面的方式
<iframe :src="this.txtUrl" frameborder="0" width="100%" :style="{height:calHeight}" scrolling="auto"></iframe>

//scrpit部分
data() {
      return {
        txtUrl: "http://domain?token=XXX",
      }
    },

但是安全部门认为这种方式不安全,应该用Post方式嵌入,所以开始尝试Post嵌入页面的过程
所以可以总结需求为:假设我们自己页面的域名是localhost:8080,称为主页面,需要嵌入的页面域名是localhost:8082,称为嵌入页面,点击localhost:8080的一个菜单栏(或者按钮),页面就需要去加载localhost:8082的首页面,并完成权限交互;

具体做法

1.因为要模拟post请求,而且要把token这个参数传递过去,所以主页面的前端可以采用iframe+form表单的形式完成post请求的提交,代码如下:

//页面部分
<div style="height: 100%;">

     <form id="idForm" action="http://localhost:8766/getTest" method="post" target="iframe">
       <input id="input1" type="hidden" name="token" value="">
     </form>
     <iframe name="iframe" id="librarySearch" class="exportTable" width="100%" height="100%" frameborder="0" scrolling="auto"></iframe>
   </div>
//这个button就模拟了在域名是localhost:8080的页面点击菜单栏,加载页面的过程
   <button @click="clickFun"></button>
//============================================================================
//scrpit部分
methods: {
   clickFun(){
     document.getElementById("input1").value ="123";
     document.getElementById("idForm").submit(); // 触发form中submit方法

   }

如上,这个button就模拟了在域名是主页面的页面点击菜单栏,加载页面的过程。主页面需要携带token过去,clickFun模拟了主页面传递给其token的过程,在实际生产中,这个token可能需要和主页面所在的后端服务交互产生。

2.iframe中的action=“http://localhost:8766/getTest” 是嵌入页面对应的后端提供的一个接口,这个接口会完成token的接收、向页面种cookie,并且返回一个302的response,重定向到嵌入页面,这样主页面请求了这个接口之后,就会完成页面的重定向,iframe里面的内容就会完成页面刷新,变为第三方页面。
http://localhost:8766/getTest这个服务代码为:

//嵌入页面的服务端口:8766
 @PostMapping(value = "/getTest")
   public void getTokenPost(HttpServletResponse response, @RequestParam String token) {
       response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);

       Cookie cookie = new Cookie("XXX", "XXX");
       cookie.setMaxAge(1000); // Cookie的存活时间(自定义)
       cookie.setPath("/"); // 默认路径
       response.addCookie(cookie);
       response.setHeader("Location", "http://localhost:8080/");//Location为嵌入页面的地址
   }

3.运行起来之后,就可以完成iframe通过post请求的方式嵌入第三方页面,并完成认证的过程了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Iframe+Post请求的方式嵌入第三方页面 的相关文章

随机推荐

  • Struts2 几种校验

    1 Struts2手动校验 1 重写actionsupport类的validate方法 action需要继承ActionSupport类 public class StrutshAction extends ActionSupport 在v
  • 三种基于感知哈希算法的相似图像检索技术

    大家都用google或baidu的识图功能 上面就是我搜索一幅图片的结果 该引擎实现相似图片搜素的关键技术叫做 感知哈希算法 Perceptual hash algorithm 它的作用是对每张图片生成一个 指纹 fingerprint 字
  • Unity插件-NGUI

    1 基本使用 NGUI gt 选项 gt Reset Perfab Toolbar 显示预制体UI组件 可以直接拖拽到场景中 使用NGUI 必须要有一个UIRoot作为父组件 在场景中的UIRoot中右键单击 然后点Create来创建组件
  • 中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码

    结论 数据 ham data txt spam data txt stop words utf8 数据处理 author liushuchun import re import string import jieba 加载停用词 with
  • 【TensorFlow】远程使用jupyter和TensorBoard

    1 远程jupyter notebook 在服务器端以如下方式启动jupyter jupyter notebook ip 0 0 0 0 结果如下 本地输入上述网址 将括号中的内容替换为服务器IP 即可启动 2 远程TensorBoard
  • Excel Vba范例

    第1部分 单元格选择技巧与选区统计 第1章 单元格与区域选择技巧 实例1选择A列最后一个非空单元格 Sub 选择A列最后一个非空单元格 Range a1048576 End xlUp Select End Sub 讲解 1 Range 返回
  • Promise初步详解(resolve,reject,catch)

    Duang 最近搭建了一个自己的博客小破站 欢迎各位小伙伴来访吖 ares coder blog portalhttps www ares stack cn blog service game 一 何为Promise 为了直观一点 首先我们
  • 利用nginx搭建简单图片服务器实现负载均衡

    在我们搭建一个网站的时候 往往有时候会加载更多的图片 如果都从tomcat服务器来获取静态资源 这样会增加我们服务器的负载 使得服务器运行 速度非常慢 这时我们可以使用nginx服务器来加载这些静态资源 这样就可以实现负载均衡 为我们的To
  • 【高危】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

    漏洞描述 企业微信私有化2 5 x版本及2 6 930000版本以下后台中存在接口未授权访问漏洞 攻击者通过访问 cgi bin gateway agentinfo接口可获得Secret 从而利用开放API获取企业通讯录等敏感信息及企业微信
  • 【硬件学习之路】

    硬件学习之路 一个22年毕业的飞行器控制专业转电子的硬件小白 这篇文章将记录我实习以及工作经历 也就是自己的学习笔记啦 硬件本来就是一个需要积累的东西 学海无涯 希望自己能不断丰富自己 而我的工作岗位是助理工程师 主要是学习绘制原理图 板上
  • 机器学习——聚类——商场客户聚类

    聚类的介绍 案例 商场客户聚类 目录 聚类的介绍 案例 商场客户聚类 一 读取数据 二 聚类 KMeans函数的参数讲解 KMeans属性列表 KMeans接口列表 三 查看数据及可视化 sort values 方法 groupby 的常见
  • python torch在dataloader处卡死

    torch在dataloader处卡死 1 解决方案 2 调试历程 2 1 网上搜索了很多方法 尝试无果 故亲自调试 2 2 进入函数 发现一段神奇的代码 1 解决方案 num workers设置为0 一般解决大多数问题 修改读取数据部分代
  • 解析properties文件

    import java io InputStream import java util Properties public class PropertiesUtil public static String getValue String
  • ruby网站部署到服务器,Ruby China 已迁移到新的服务器,基于 Docker 部署

    终于决定要迁移新服务器了 之前那台老机器陪同 Ruby China 运作了 6 年 如果我没记错的话 系统还是 Ubuntu 12 04 昨天下班前还是准备 同步数据库到 UCloud 的 PostgreSQL 服务上 避免以后自己维护和备
  • Elasticsearch(一):入门篇

    文章目录 一 Docker安装ES和Kibana 二 基本概念 文档 index 索引 type 类型 id ID 三 保存或修改文档数据 POST PUT 四 检索文档 GET 1 检索一个文档 2 检索多个文档 mget 五 删除文档
  • 计算机组成原理——万字详解

    引言 作为还在学习的学生和不断进步的同事 学习计算机组成原理具有以下几个重要的好处 它可以帮助你深入理解计算机系统的工作原理 包括处理器 存储器 输入输出设备等组成部分之间的交互关系 这种深入理解可以提高你对计算机系统的整体把握能力 让你能
  • Selenium 自动化测试实战笔记1

    1 安装 selenium pip install selenium 3 11 0 安装指定版本 pip install selenium U 安装最新版本 pip show selenium 查看当前版本 pip uninstall se
  • linux关机等待90秒

    ubuntu关机时 提示 A stop job is running for Session c2 of user 1min 30s 解决方法 sudo gedit etc systemd system conf 去除默认的注释 修改为 D
  • Lua : 回调函数不用怕,用法简单仿C/C++

    Lua也可以做回调函数 那当然 不明觉厉 嘿嘿嘿 那是不是可以在Lua编程时候搞点飞机啦 加 function add x y return x y end 减法 function minux x y return x y end func
  • 使用Iframe+Post请求的方式嵌入第三方页面

    背景描述 本身我们有自己的一个系统 之后采购了一个新系统 新系统的页面要嵌入到我们自己系统页面来 两个系统之间的权限交互通过token来进行传递和认证 本身嵌入采用如下方式就非常简单了 就是常规的iframe嵌入页面的方式 常规的ifram