413完整HEAD错误

时间:2013-10-12 12:07:35

标签: java javascript google-app-engine servlets

我创建了一个动态博客引擎,多个作者可以发布文章。

作者进入一个页面,他在三页<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&amp; title = blah&amp; .......... gs。%0A%0A&amp; userId = 1”

问题:

是否有另一种方法可以发送大型服务器请求? 我还在谷歌上看到我们可以改变大小,以匹配巨大的请求?

在java,HTML,javascript(或)jQuery中首选答案

编辑 我读了here我们可以在标头中设置发布请求的大小限制吗?我怎么能在GAE中做到这一点?

2 个答案:

答案 0 :(得分: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>

这是一个单行改变。

在服务器上,确保在servlet中使用doPost()而不是doGet()。您可以以类似的方式获取参数。

答案 1 :(得分:0)

在我的情况下,HEADER已满,因为Cookie值对于SESSIONID来说太大了。我删除了该网站的所有cookie,但它确实有效。