摘要:場景有個頁面,對請求的結果進行判斷后,獲取結果里面的數據傳遞給一個,跳轉到新的頁面。即當請求頭過大時,超過時,可能返回或者錯誤。當的長度大于的一個時,會返回錯誤,對應上面的場景。
場景
有個頁面 a.vm,對 ajax 請求的結果進行判斷后,獲取結果里面的數據傳遞給一個 URL(b.htm),跳轉到新的頁面 b.htm。
遇到的問題
因為一開始是 GET 請求,所以當傳遞的數據過大的時候,會報錯 nginx 414 request-uri too long
客戶端請求頭緩沖區(qū)大小,如果請求頭總長度大于小于128k,則使用此緩沖區(qū)
client_header_buffer_size 128k;
請求頭總長度大于128k時使用 large_client_header_buffers 設置的緩存區(qū)
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可能被寫入較大的數據
請求參數太長,比如發(fā)布一個文章正文,用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; });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84859.html
摘要:系列文章請查看超詳細的面試題總結一之基礎知識篇超詳細的面試題總結二之基礎知識篇超詳細的面試題總結三之集合篇常見問題下面的都是自己之前在學習的時候總結的,對于鞏固的基礎知識應該有很大幫助。注意多線程的并發(fā)的讀寫類屬性會導致數據不同步。 系列文章請查看: 超詳細的Java面試題總結(一)之Java基礎知識篇 超詳細的Java面試題總結(二)之Java基礎知識篇 超詳細的Java面試題總結(...
摘要:新增一篇新聞新增失敗輸入不符合要求請輸入標題請輸入內容新增文章上面代碼中的是為了防攻擊的,每個表單都必須存在。 本文我將結合簡單例子,完成laravel框架下的增刪改查,希望會對大家有所幫助。在進行之前,大家應該保證自己的數據庫鏈接無誤,artisan命令能正常使用,路由鏈接無問題。 一、創(chuàng)建控制器、路由避免影響其他路由,我們先注釋掉之前聯系時編寫的所有路由。因為上一章我們已經學會建立...
閱讀 3538·2021-11-22 15:22
閱讀 3328·2019-08-30 15:54
閱讀 2724·2019-08-30 15:53
閱讀 783·2019-08-29 11:22
閱讀 3529·2019-08-29 11:14
閱讀 2073·2019-08-26 13:46
閱讀 2210·2019-08-26 13:24
閱讀 2277·2019-08-26 12:22