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

发布时间 - 2026-01-11 02:57:42    点击率:

场景

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

总结

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


# js跳转页面post传值  # js跳转页面post传参数  # js  # post  # 跳转页面  # js的函数的按值传递参数(实例讲解)  # jsp中四种传递参数的方法  # JS中传递参数的几种不同方法比较  # JS中append字符串包含onclick无效传递参数失败的解决方案  # 完美解决js传递参数中加号和&号自动改变的方法  # 浅谈在js传递参数中含加号(+)的处理方式  # JS控制静态页面传递参数并获取参数应用  # JavaScript 中传递参数的方式示例详解  # 过大  # 解决办法  # 是由  # 太长  # 总长度  # 有个  # 也要  # 太大  # 又要  # 一个问题  # 跳转  # 这篇文章  # 报错  # 谢谢大家  # 在工作中  # 到新  # 主要是  # 客户端  # 量比  # 有疑问 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速生成ASP一键建站模板并优化安全性?  如何在建站宝盒中设置产品搜索功能?  如何在香港免费服务器上快速搭建网站?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  jQuery中的100个技巧汇总  公司门户网站制作流程,华为官网怎么做?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何为不同团队 ID 动态生成多个“认领值班”按钮  PHP 500报错的快速解决方法  如何制作一个表白网站视频,关于勇敢表白的小标题?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何用美橙互联一键搭建多站合一网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  微信推文制作网站有哪些,怎么做微信推文,急?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  潮流网站制作头像软件下载,适合母子的网名有哪些?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何确保FTP站点访问权限与数据传输安全?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel distinct去重查询_Laravel Eloquent去重方法  JavaScript实现Fly Bird小游戏  如何用好域名打造高点击率的自主建站?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  制作公司内部网站有哪些,内网如何建网站?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何快速登录WAP自助建站平台?  独立制作一个网站多少钱,建立网站需要花多少钱?  网站建设要注意的标准 促进网站用户好感度!  怎样使用JSON进行数据交换_它有什么限制  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  微信小程序 require机制详解及实例代码  如何在 React 中条件性地遍历数组并渲染元素  微信小程序 五星评分(包括半颗星评分)实例代码  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  网站页面设计需要考虑到这些问题  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  新三国志曹操传主线渭水交兵攻略  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel观察者模式如何使用_Laravel Model Observer配置  如何基于PHP生成高效IDC网络公司建站源码?