如何让window.open()以post请求方式调用(巧妙解法)
2024-09-13 00:52:09
问题由来:
在公司遇到一个线上bug,如下
var url = 'http://106.75.31.215:8012/onlinePreview?url=' + encodeURIComponent(fileUrl); window.open(url, "_blank", "height=" + winHeight
+ ",top=80,left=80,toolbar=no, menubar=no, scrollbars=yes, resizable=yes");
由于 fileUrl 是多张图片的 url 拼装而来,在这里我们使用get请求方式调的后台图片预览接口,发现后台报错 请求头过长。
特此查了下
在IE8 下的URL地址总长度为:4076,超过该长度会自动忽略后面的内容;
在firefox 25下的URL地址总长度可以达到:7530,超过该长度会访问错误;
在chrome 29.0.1547.62 的最大总长度达到:7675,超过该长度会访问错误;
尴尬。。。我们这有一万多的字符。
解决思路:
换post请求啊,不能忍啊,因为post请求理论上没有请求数据的长度限制,但是没这么搞过啊。
解决方案:
好像以前只在form表单里接触过post调用,那么能不能让window.open()先打开一个隐藏的form表单呢?然后把请求数据塞进去,而偷偷的自动提交,不久可以了么。机智啊
实施如下:
var winHeight = window.document.documentElement.clientHeight-10;
var url = 'http://106.75.31.215:8012/picturesPreview';
var formStr = '<form style="visibility:hidden;" method="POST" action="' + url + '">' +
'<input type="hidden" name="urls" value="' + encodeURIComponent(urls) + '" />' +
'<input type="hidden" name="currentUrl" value="' + encodeURIComponent(fileUrl) + '" />'+
'</form>';
var win = window.open("", "_blank", "height=" + winHeight
+ ",top=80,left=80,toolbar=no, menubar=no, scrollbars=yes, resizable=yes");
win.document.body.innerHTML = formStr;
win.document.forms[0].submit();
经测试,可以跑通,完美解决。
最新文章
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
- box-sizing重置盒子模型计算规则
- C# 基础(4)
- 通过HP Loadrunner VuGen来录制安卓的应用
- 从底层理解Python的执行
- Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION
- 8款唯美设计的HTML5/CSS3应用
- WCF 服务的ABC之契约(七)
- 关于 Head First SQL 中文版
- NodeJS入门教学
- 为DataGridView增加鼠标滚轮功能
- WPF学习笔记(1):DataGrid单元格实现逐键过滤功能
- mytabits表关联一对一(多对一?)
- [转] String to Date conversion in hive - 在 Hive 中各种字符串转换成日期格式
- VM虚拟机安装后的网络设置
- LeetCode:49. Group Anagrams(Medium)
- ubuntu text mode和图形界面切换
- HDU6315 Naive Operations(多校第二场1007)(线段树)
- Linux tar包安装Nginx
- MongoDB的选举过程(转)
热门文章
- thinkpadE470 win10安装虚拟机时出现‘intel VT-x’处于禁用状态 无法执行64位操作系统
- 前端js代码优化
- 关于eclipse安装springide的记录
- centos/linux下的安装Maven
- 阿里云CentOS 7系统挂载SSD云盘的教程_Linux
- MysqL主从复制_模式之GTID复制
- DxPackNet 4.保存音视频为本地avi文件
- Docker系列二:Docker的基本结构
- tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址
- 腾讯云+校园扶持计划是bug还是福利