前端实现window.open实现pdf预览以及请求时携带请求头通过后端权限校验

项目场景:

需求是点击预览时 跳转的一个新的页面展示


问题描述

window.open携带不了token进行一个请求



原因分析:

window.open()方法直接根据文件路径进行跳转 根本没有走请求 自然携带不了token,知道原因以后就好解决了 我们可以先通过window.opne()方法 把我们需要的参数传递并打开一个新的页面

Window open() 方法 | 菜鸟教程

这是window.open 的使用方法 自行查看 如果你的需求只是打开可以不用跳转页面 直接把路径放在open方法里即可

本文仅介绍window.open方法携带请求头进行预览

本文前提是后端给你返回的是pdf文件流 如是普通文件流 那么此方法在最后把文件流转为url时 iframe不能识别


解决方案:

//根据路由跳转即可 须要在router文件中定义一个静态路由 

let url=this.$router.resolve({

        path:'/view'

 })

//这个时候你需要把你需要请求接口的参数和须要的token 传递过去 

let token=res.filetype;

window['res']={id,token}

//跳转新页面

window.open(url.href, "_blank");

//接着在你打开的页面的create中拿到传递过来的数据

let recetive=window.opener['res']

//拿到数据以后就开始走接口 因为使用的是axios 所以请求自带token

async yl(){

//这个时候你拿到的数据应该是blob流的 无法直接识别 须要转成url地址

let res=await yl(this.id)

this.url=whndow.URL.createObjectURL(res)

}

//最后在template中使用一个标签

<iframe :src="url" style="border:none;width:100%;height:100%;"></iframe>

//最后就完美解决了

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值