2

複数の著者が記事を公開できる動的なブログ エンジンを作成しました。

著者は、「記事」「説明」と「記事全体」を 3 つ入力するページに移動します。<textarea> 次に、すべての値を 3 つの変数に保存し、ajax ベースのリクエストを介してデータベースに保存します。

問題: HttpServerRequest が大きすぎるため、413 FULL Head エラーが発生し、要求が通過しません。

コード:

HTML:

<div class="container">
        <h4 class="text-left">Title:</h4>
        <textarea id="title" rows="2" cols="" ></textarea>
        <br />
        <h4 class="text-left">Description:</h4>
        <textarea id="description" rows="5" cols="" ></textarea>
        <br />
        <h4 class="text-left">Article:</h4>
        <textarea id="article" rows="40" cols="" onkeyup="replaceWordChars(this.value)"></textarea>
        <br />

        <div class="publish btn">Publish</div>
        <br />
        <br />
    </div>

スクリプト:

<script>
    $(function(){
        $('.publish').click(function(){
            title = $('#title').val();
            description = $('#description').val();
            article = $('#article').val();

            $.ajax({
                type:       "get",
                url:        "/articles",
                data:       {action:'add', title:title, description:description, article:article},
                success:    function(code)
                {
                            alert("published"); 
                            window.location="dashboard.jsp";
                }

            }).error(function(){ alert("error"); })
            .complete(function(){ alert("complete"); });

        });

    });
    </script>

エラー:

「NetworkError: 413 FULL head - http:///articles?action=add&title=blah&........gs.%0A%0A&userId=1」

質問:

大きなサーバー要求を送信する別の方法はありますか?? 巨大なリクエストに合わせてサイズを変更できることもグーグルで読みましたか?

回答は、java、HTML、javascript (または) jQuery で優先されます

編集ヘッダーで投稿リクエストのサイズ制限を設定できることをここで読みどうすればGAEでそれを行うことができますか?

4

2 に答える 2

5

大きなパラメータに HEAD または GET を使用しないでください。これらは、冪等のリクエスト (繰り返しても何も壊れない) と、とにかくデータを取得するだけのリクエスト (つまり、製品データベースの検索またはフィルタリング) にのみ使用する必要があります。

代わりに POST リクエストを使用します。

<script>
    $(function(){
        $('.publish').click(function(){
            title = $('#title').val();
            description = $('#description').val();
            article = $('#article').val();

            $.ajax({
                type:       "post",
                url:        "/articles",
                data:       {action:'add', title:title, description:description, article:article},
                // .... skipped unchanged lines
    </script>

これは 1 行の変更です。

サーバーでは、サーブレットではdoPost()なくを使用してください。doGet()同様の方法でパラメーターを取得できます。

于 2013-10-12T12:10:53.733 に答える
0

私の場合、Cookie の値が SESSIONID に対して大きすぎるため、HEADER がいっぱいになりました。そのサイトのすべての Cookie を削除したところ、機能しました。

于 2017-09-06T13:04:24.440 に答える