JSページPOST転送パラメータは、新しいページにジャンプします.
2985 ワード
シーン
a.vmのページがあり、ajax要求の結果を判断した後、取得結果の中のデータが一つのURL(b.httm)に渡され、新しいページ
遭遇した問題最初は クライアント要求ヘッドバッファサイズは、要求ヘッドの合計長さが128 k未満である場合、このバッファ領域 を使用する.
要求ヘッドの総長さが128 kより大きい場合、 を使用する.
このような原因をもたらします. cookieに書き込まれた値が大きすぎて、headerにおける他のパラメータのsizeが一般的に固定されているため、クッキーだけが大きなデータ に書き込まれる可能性がある.要求パラメータが長すぎて、例えば文章の本文を発表して、urlencodeを使った後、get方式を使って楽屋 に伝えます.
今回の故障の原因は問題2によるものです.すなわち、要求ヘッドが大きすぎると、
Requestラインの長さが
要求ヘッダの中の一番長い行も
臨時解決策
nginxパラメータを変更
主に以下のパラメータ値を大きくします.
最終解決策
jquery.redirect.jsフレームを用いてこのような状況を処理する場合、主に使用される関数は
コードは以下の通りです
a.vmのページがあり、ajax要求の結果を判断した後、取得結果の中のデータが一つのURL(b.httm)に渡され、新しいページ
b.htm
に遷移する.遭遇した問題
GET
から要求されたので、伝達されたデータが大きすぎると、エラーが発生します.client_header_buffer_size 128k;
nginx 414 request-uri too long
で設定されたキャッシュエリアlarge_client_header_buffers
コマンドパラメータ4は個数で、128 kはサイズで、デフォルトは8 kです.4つの128 kを申請しますlarge_client_header_buffers 4 128k;
httpのURIが長すぎたり、request headerが大きすぎたりすると、414 Request URI too largeまたは400 bad requestエラーが報告されます.このような原因をもたらします.
今回の故障の原因は問題2によるものです.すなわち、要求ヘッドが大きすぎると、
large_client_header_buffers
を超えると、inxはlarge_client_header_buffer
またはRequest URI too large (414)
にエラーを返すことができる.Requestラインの長さが
Bad-request(400)
のlarge_client_header_buffer
より大きい場合、buffer(128k)
はnginx
エラーを返し、上記のシーン2に対応する.要求ヘッダの中の一番長い行も
"Request URI too large" (414)
より小さくなければなりません.large_client_header_buffer
の一番長い行が一つのRequest line
より大きい場合、buffer(128k)
のエラーに戻り、上記のシーン1に対応します.臨時解決策
nginxパラメータを変更
主に以下のパラメータ値を大きくします.
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
しかし、この値を大きくすると問題が発生します.私のサーバのデータ量が比較的大きい場合、またこのような方法を修正するかもしれません.最終的な解決方法は"Bad-request"(400)
の要求方式によってGET
の要求方式に変更されます.最終解決策
jquery.redirect.jsフレームを用いてこのような状況を処理する場合、主に使用される関数は
POST
である.コードは以下の通りです
$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;
});