在项目中遇到问题,要求动态拼接uri下载文件。但是由于项目的安全拦截导致window.location.href 和 window.open等新建窗口的方法都不行。

无意间百度到了通过form表单来下载的方法,具体如下。

1,form的action设置为接口地址,method设置为post,Post到后台的数据设置为input的属性 name = key,value = value的形式,如果有多个key、value的值要传递,那么就设置多个input来分别储存单个的key、value;

2, 如果请求的接口可以不需要参数,那么input还是必须要一个,如果不要得话 会引起接口报错

原理:form的action相当于一个浏览器本页签/页面的一个请求,不会被后台,前台的路由拦截。所以能够提交成功。

注意点:如果设置method为get,在action中的uri添加了参数的话,想用这个参数替代input的key、value形式来提交到后台,这参数是没有效果的,后台拿不到这些参数,真正的参数还是以input的name、value的形式储存,在submit方法执行后传递到后台。

代码:

POST

let idInput = ary.map(item => {
return `<input type='hidden' name='idList' value=${item.id}/>`;
}).join('');
let url = `http://${pkg.config.devHost +":"+pkg.config.devPort}/api/entity/manager/export`
$(`<form method='get'  action='${url}'></form>`)
.appendTo('body')
.HTML(idInput)
.submit()
.remove();

最新文章

  1. 关于如何通过json更改背景图片
  2. 面试中遇到的iOS笔试题
  3. [SoapUI] 同一个Resource不同参数时,在两个step里默认打开总是同一个Resource
  4. C# 文件流相关操作
  5. IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
  6. OpenCV入门学习笔记
  7. Oracle数据表恢复
  8. ubuntu远程连接
  9. java反射获取注解并拼接sql语句
  10. jfianl返回自定义的404页面
  11. PL/SQL developer 管理多套数据库
  12. node源码详解(四) —— js代码如何调用C++的函数
  13. 使用getCurrentPosition方法实时获取当前Geolocation信息(赋源码文件)--html5、JavaScript
  14. 在线教育平台搭建 预览和models
  15. redis在java客户端的操作
  16. java类的继承(基础)
  17. 玩转3D Swiper美女性感秀之思路分析总结
  18. 使用WinForm Chart控件 制作饼装,柱状,折线图
  19. ACM-ICPC 2018 南京赛区网络预赛 J.sum(欧拉筛)
  20. JavaScript变量提升的理解

热门文章

  1. PPT转化成Image、PPTX、XPS、EMF
  2. 小萝贝控机大师工具推荐(一款在PC就能控制手机界面的工具)
  3. OSGi 基本原理
  4. 学习EF之贪婪加载和延迟加载(1)
  5. 初识ASP.NET MVC
  6. spring笔记5 spring IOC的基础知识1
  7. 2017Windows下安装pip
  8. Python3.5安装及opencv安装
  9. MySQL基础知识和操作(一)
  10. 深入理解 RESTful Api 架构