场景

最近在工作中遇到一个需求,有个页面 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 large或400 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;

});

总结

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

jsp页面页面post传值_在Js页面通过POST传递参数跳转到新页面详解相关推荐

  1. java调接口传值_关于调用第三方接口时传递参数是File类型的解决方式

    正版编程与类型系统讲解基于的应用 77.35元 (需用券) 去购买 > 最近项目,需要我调用另一个项目中的某个接口,接口的入参为File类型,要拿到此接口返回的数据@ApiOperation(& ...

  2. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解

    前台到后台的流程:前台jsp->后台:controller控制器层->service业务层->DAO数据访问层->数据库model模型层. 从上面流程可知,前台jsp的数据,想 ...

  3. react如何跳转html页面,react中实现点击跳转到新页面方法

    实现点击跳转到新页面,可以有两种形式,一个是本地页面打开,一个是本地页面不变跳转到新的页面. (一)页面点击本地页面打开新页面 引入ant的Button组件 onClick={()=>{wind ...

  4. JS 跳转到新页面并用post传参

    JS 跳转到新页面并用post传参 今天在开发的过程中有一个需求,要求:打开一个新的页面同时传参. 这个不难实现 <a> 标签 就可以实现,但它却是使用 get方式传参,这种直接将参数拼接 ...

  5. js layui跳转页面_Layer.js提示层弹窗结束之后自动跳转到新页面的效果

    弹层之美 Layer 是一款近年来备受青睐的web弹层组件,提供layer.open(options)核心调用方法.她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的 ...

  6. html中a标签根据一个参数跳转不同的页面

    html中a标签根据一个参数跳转不同的页面 a标签 a标签通过调用fun1()方法来跳转不同页面 <a href="javascript:void(0);" onclick= ...

  7. HTML点击图片跳转到新页面怎么实现?(示例)

    我们在设计网页开发过程中,"跳转链接"这个需求是最普遍不过了.相信那些对HTML有一定了解的朋友,想要实现点击某个元素然后跳转到新链接新页面的功能,是非常简单的事情.比如点击按钮实 ...

  8. node怎么跳转链接_nodejs怎么跳转到新页面?

    在nodejs中使用req.query或req.params方式获取前端传来的参数,然后根据获取的参数使用res.render()方法进行页面跳转. nodejs跳转到新页面示例: 在我们做项目中一般 ...

  9. node怎么跳转链接_nodejs怎么跳转到新页面

    在nodejs中使用req.query或req.params方式获取前端传来的参数,然后根据获取的参数使用res.render()方法进行页面跳转. nodejs跳转到新页面示例: 在我们做项目中一般 ...

最新文章

  1. mysql字符集查看_查看和设置mysql字符集
  2. 【Java面试题】39 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?...
  3. leetcode算法题--子集
  4. [PHP] PHP与Apache的模块配合说明
  5. 097实战 关于ETL的几种运行方式
  6. java导出jar带第三方库_在.jar文件中导出java库
  7. BZOJ 3304: [Shoi2005]带限制的最长公共子序列( LCS )
  8. Java 数据类型和 MySql 数据类型对应一览表
  9. POJ 1050 To the Max (最大子矩阵和)
  10. 6Linux 终端命令格式
  11. 北理工java分析题_2020春北理工《Java技术与应用》在线作业-1(参考)
  12. excel计算机快捷键大全,Excel使用教程 Excel表格快捷键与功能键大全
  13. 全球首位H3CIE证书获得者赵鹏
  14. 用JSDoc生成js文档
  15. nas磁盘用什么软件测试,手把手教你从NAS拿点空间当电脑硬盘使用 iSCSI开启网络硬盘共享...
  16. MySql数据库函数与子查询和连接查询(3)
  17. Package ‘polycor’
  18. 通过LR给随手拍的静物照片进行小清新色调的调色
  19. Probability Theory | Coin Tossing Problems (TBC) | 概率论中的抛硬币问题 (未完待续)
  20. 高校实验室设备预约管理系统

热门文章

  1. 什么是透明传输 点对多传输? 它们有哪些经典应用和优势特点
  2. 数学猜想验证步骤_高中数学解题思路与技巧汇总,19种解题方法,实用!
  3. java list 字段去重_如何实现java8 list按照元素的某个字段去重
  4. C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序_提取排序规则
  5. 通信调制体制设计之64QAM性能分析MATLAB仿真及代码
  6. 第二章导数与微分思维导图_线性代数第二章 矩阵 思维导图
  7. matlab 误差椭圆,求3倍标准差误差椭圆分析的程序
  8. ubuntu设置mysql可以非本地访问_ubuntu server下设置mysql的远程访问权限
  9. javaweb 需要对表格建立实体类吗_如何采用java界面编程建立一个表格
  10. Git同时使用不同平台代码仓库