国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

在Js頁面通過POST傳遞參數跳轉到新頁面詳解

2024-05-06 16:39:13
字體:
來源:轉載
供稿:網友

場景

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三亚市| 吴桥县| 灵川县| 平远县| 汶川县| 永德县| 福泉市| 巴楚县| 凤台县| 宜良县| 兴文县| 手机| 高阳县| 津市市| 沙河市| 临桂县| 余江县| 静海县| 宜昌市| 盘山县| 江城| 于都县| 永城市| 札达县| 南投县| 明光市| 苗栗县| 屏边| 遵义市| 柞水县| 乐陵市| 鱼台县| 伊宁县| 呈贡县| 昆山市| 澎湖县| 梨树县| 韶关市| 湄潭县| 高安市| 凭祥市|