在Js页面通过POST传递参数跳转到新页面详解


Posted in Javascript onAugust 25, 2017

场景

最近在工作中遇到一个需求,有个页面 a.vm,对 ajax 请求的结果进行判断后,获取结果里面的数据传递给一个 URL(b.htm),跳转到新的页面 b.htm。

遇到的问题

因为一开始是 GET 请求,所以当传递的数据过大的时候,会报错 nginx 414 request-uri too long

客户端请求头缓冲区大小,如果请求头总长度大于小于128k,则使用此缓冲区

client_header_buffer_size 128k;

请求头总长度大于128k时使用 large_client_header_buffers 设置的缓存区

large_client_header_buffers 指令参数4为个数,128k为大小,默认是8k。申请4个128k。

large_client_header_buffers 4 128k;

当http 的URI太长或者request header过大时会报414 Request URI too large400 bad request错误

造成这样的原因

cookie中写入的值太大造成的,因为header中的其他参数的size一般比较固定,只有cookie可能被写入较大的数据

请求参数太长,比如发布一个文章正文,用urlencode后,使用get方式传到后台

本次的故障原因是由问题 2 引起的。即当请求头过大时,超过 large_client_header_buffer 时,nginx可能返回 Request URI too large (414) 或者 Bad-request(400) 错误。

当Request line的长度大于large_client_header_buffer的一个buffer(128k)时,nginx会返回"Request URI too large" (414)错误,对应上面的场景2。

请求头中最长的一行也要小于large_client_header_buffer,当不是Request line的最长行大于一个buffer(128k)时,会返回"Bad-request"(400)错误,对应上面的场景1。

临时解决办法

修改 nginx 参数

主要是调大以下参数值:

client_header_buffer_size 512k;
large_client_header_buffers 4 512k;

但是调大这个值会出现一个问题,当我的服务器腾挪数据量比较大的时候,可能又要修改这样不是一个办法,最终的解决办法就是由 GET 请求方式修改为 POST 请求方式

最终解决办法

使用 jquery.redirect.js 框架来处理这样的情况,主要使用到的函数是 $.redirect

代码如下:

$http({
    method: "POST",
    dataType: "json",
    contentType: 'application/json',
    url: url,
    data: data,
   }).success(function (data) {
    if (data.success) {
     crId = data.data;
     $scope.errMsg = "";
     var url = "/xx.htm?id=" + id;
     window.location.href = url
    } else {
     $scope.errMsg = data.message;
     $scope.isDisabled = false;
     $scope.errorCode = data.code;
     $scope.trv.physics = data.data;
     if(data.statusCode === -224){
      var vms = data.data;
      console.log("vms: " + vms);

      $.redirect('/b.htm', {'vms': vms.toString(), 'resource': trv.resource, 'errMsg': $scope.errMsg});
     }

    }
   }).error(function (data) {
    alert(data);
    $scope.isDisabled = false;
   });

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
jquery.ui.progressbar 中文文档
Nov 26 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
Feb 08 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
bootstrap模态框实现拖拽效果
Dec 14 Javascript
浅谈$_FILES数组为空的原因
Feb 16 Javascript
ES6的解构赋值实例详解
May 06 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
cypress测试本地web应用
Jun 01 Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 #Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 #Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 #Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 #Javascript
Vue.js进行查询操作的实例详解
Aug 25 #Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 #Javascript
Vue.js框架路由使用方法实例详解
Aug 25 #Javascript
You might like
php 获取select下拉列表框的值
2010/05/08 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
浅谈django中的认证与登录
2016/10/31 Python
python 获取网页编码方式实现代码
2017/03/11 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python可视化实现代码
2019/01/15 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
个人实习生的自我评价
2014/02/16 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年司机工作总结
2014/11/21 职场文书
大学感恩节活动总结
2015/05/05 职场文书
毕业生学校组织意见
2015/06/04 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
会议室管理制度范本
2015/08/06 职场文书