浏览器中打印pdf被阻止:
最近遇到个奇怪的问题,页面上有个打印功能,点击后调用后端接口,后端生成一个pdf文件,并返回路径,前端根据路径在浏览器中打开pdf文件
在本地可以正常运行,部署到服务器后就不行了,奇怪的是,有些页面的又可以,经反复排查,是前端问题:
用download方法就会被浏览器阻止,如果用window.open就不会 //下载 download(url){ let link = document.createElement('a'); link.href = url; link.target = '_blank'; link.download = url; document.body.appendChild(link); link.click(); document.body.removeChild(link); }, //打印 exportList(id){ statementPrintData(id).then(res => { //调用download就会被浏览器阻止 //this.download(process.env.VUE_APP_API_URL_FILE+'/'+res.data.url) //调用window.open就举动 window.open(Setting.fileBaseURL + '/' + res.data.url,'_blank') }).catch(err => { this.$message.error(err.msg) }) },
原因:
这是因为现代浏览器出于安全考虑,会阻止一些未经用户明确操作的文件下载行为,尤其是通过动态创建链接并触发点击事件的方式。在 download
方法中,即使你手动创建了 <a>
标签并模拟点击下载,浏览器可能仍认为这是不安全的下载行为,尤其是在 HTTPS 环境下。
相比之下,window.open
是浏览器允许的操作之一,打开新窗口或标签页进行文件的下载或展示,不会触发浏览器的安全下载机制。因此,浏览器不会阻止使用 window.open
触发的文件下载。
你可以继续使用 window.open
来避免浏览器的安全限制。这一结果也表明,通过 window.open
打开的文件下载会被视为用户主动发起的请求,因而不会触发安全下载机制。
赞:(0)
踩:(0)
- 相关文章
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1300144