首页 > 其他分享 >iframe标签存取token的问题

iframe标签存取token的问题

时间:2022-08-18 16:37:45浏览次数:61  
标签:contentType 存取 data token sessionGetItem iframe sessionStorage config

需求:

在a项目中嵌套b项目的b1页面,使用iframe 实现页面嵌套,但是token不共享的情况下如何存取token 正常访问B1页面。

实现:

后台提供不需要输入用户名密码的接口,跑定时任务可以正常获取token。但是iframe 无法正常使用get/setcookie 的方式存取token。只能改变思路使用

sessionStorage的setItem/getItem 方法。 代码:
/** 设置缓存 **/
export function sessionSetItem(name, data) {
    window.sessionStorage.setItem(name, data)
}
/** 获取缓存 **/
export function sessionGetItem(data) {
    return window.sessionStorage.getItem(data);
}
/** 删除缓存 **/
export function sessionRemoveItem(data) {
    window.sessionStorage.removeItem(data)
}
/** 删除全部缓存 **/
export function sessionRemoveItemAll() {
    window.sessionStorage.clear()
}

request.js文件引入上述方法

import {
    delCookie,
    getCookie,
    setCookie,
    sessionRemoveItem,
    sessionGetItem
} from "./index.js";

并设置config 请求头的值

axios.interceptors.request.use(
    config => {
        //qs 系列化参数
        if (!config.noLoading) {
            Vue.prototype.loadingCount++;
            Vue.prototype.nowloading();
        } else if (Vue.prototype.loadingCount != 0) {
            Vue.prototype.loadingCount++;
        }
        if (config.contentType == 'application/json;charset=utf-8') {
            config.data = JSON.stringify(config.data)
        } else if (config.contentType == 'multipart/form-data;charset=utf-8') {
            config.data.append('token', getCookie('apToken'))
        } else {
            config.data = qs.stringify(config.data);
        }
        if (config.contentType) {
            config.headers['Content-Type'] = config.contentType;
        }
        //增加header参数(用户中心网关拦截)
            config.headers['btoken'] = getCookie('apToken') ? getCookie('apToken') : sessionGetItem('apSessionToken');return config;
    },
    error => {
        return Promise.reject(error);
    }
);

在b1页面定义获取token的方法,并用session存储即可。

         // 获取token
        getTokenMsg(){
            this.$get('请求接口路径').then(res=>{
                if(res.code == '200'){
                    sessionSetItem('apSessionToken',res.data);
                    console.log('111',sessionGetItem('apSessionToken')+','+res.data);
                    this.handleSelectClick();//直接调用查询接口
                }
            })
        },

 

标签:contentType,存取,data,token,sessionGetItem,iframe,sessionStorage,config
From: https://www.cnblogs.com/zhu-xl/p/16599136.html

相关文章

  • 微信公众平台你的服务器没有正确响应Token验证的解决方法 (2014-03-20 12:15:12)
    关于微信公众平台如何使用开发模式的一些详细步骤大家可以查看另外一篇文章【微信公众平台如何使用开发模式】,里面有详细描述,这里指简要解释,微信公众平台你的服务器没有正......
  • springboot~用正则表达式提取bearer token
    前后一体的应用,是这样进行认证的用户向服务端发送验证信息(用户名、密码);服务端验证成功就向用户返回一个sessionid;服务端保存了这个session_id对应的信息,并写入用户......
  • SpringSecurity+Token实现权限校验
    1.SpringSecurity简介SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的......
  • 11.jmeter实现跨线程调用token值
    1.请求登录接口提取token值,确保token值提取成功,可以添加调试取样器在请求中,查看结果树是否提取成功   2.设置token为全局变量线程组-添加-BeanShell取样器,输入脚本......
  • 接口测试经典面试题:Session、cookie、token有什么区别?
    原文链接HTTP是一个没有状态的协议,这种特点带来的好处就是效率较高,但是缺点也非常明显,这个协议本身是不支持网站的关联的,比如https://ceshiren.com/和https://ceshiren.co......
  • golang之jwt的token登录
    什么是JSONWebToken?JSONWebToken(JWT)是一个开放标准(RFC7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON方式安全地传输信息。由于此信息是经过数字签名的......
  • 接口测试经典面试题:Session、cookie、token有什么区别?
    原文链接HTTP是一个没有状态的协议,这种特点带来的好处就是效率较高,但是缺点也非常明显,这个协议本身是不支持网站的关联的,比如https://ceshiren.com/和https://ceshiren.co......
  • 自定义注解进行token校验(转载)
    (18条消息)SpringBoot自定义注解实现Token校验_李秀才的博客-CSDN博客_springboot校验token......