【问题标题】:413 Full HEAD error413 完整的 HEAD 错误
【发布时间】:2013-10-20 11:16:38
【问题描述】:

我制作了一个动态博客引擎,多个作者可以在其中发布文章。

作者进入一个页面,在其中输入了三个<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 中是首选

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

【问题讨论】:

  • @user2511414 不,这对于单个请求来说太过分了。无论如何,GAE 甚至都不支持 websocket。
  • 我没见过用get方法发送大数据!也许您需要将数据发布为POST 方法。

标签: java javascript google-app-engine servlets


【解决方案1】:

不要对大参数使用 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()。您可以通过类似的方式获取参数。

【讨论】:

    【解决方案2】:

    在我的情况下,HEADER 已满,因为 cookie 值对于 SESSIONID 来说太大了。我删除了该网站的所有 cookie,它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多