问题由来:

在公司遇到一个线上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();

经测试,可以跑通,完美解决。

最新文章

  1. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
  2. box-sizing重置盒子模型计算规则
  3. C# 基础(4)
  4. 通过HP Loadrunner VuGen来录制安卓的应用
  5. 从底层理解Python的执行
  6. Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION
  7. 8款唯美设计的HTML5/CSS3应用
  8. WCF 服务的ABC之契约(七)
  9. 关于 Head First SQL 中文版
  10. NodeJS入门教学
  11. 为DataGridView增加鼠标滚轮功能
  12. WPF学习笔记(1):DataGrid单元格实现逐键过滤功能
  13. mytabits表关联一对一(多对一?)
  14. [转] String to Date conversion in hive - 在 Hive 中各种字符串转换成日期格式
  15. VM虚拟机安装后的网络设置
  16. LeetCode:49. Group Anagrams(Medium)
  17. ubuntu text mode和图形界面切换
  18. HDU6315 Naive Operations(多校第二场1007)(线段树)
  19. Linux tar包安装Nginx
  20. MongoDB的选举过程(转)

热门文章

  1. thinkpadE470 win10安装虚拟机时出现‘intel VT-x’处于禁用状态 无法执行64位操作系统
  2. 前端js代码优化
  3. 关于eclipse安装springide的记录
  4. centos/linux下的安装Maven
  5. 阿里云CentOS 7系统挂载SSD云盘的教程_Linux
  6. MysqL主从复制_模式之GTID复制
  7. DxPackNet 4.保存音视频为本地avi文件
  8. Docker系列二:Docker的基本结构
  9. tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址
  10. 腾讯云+校园扶持计划是bug还是福利