URL-адрес запроса слишком длинный HTTP-ошибка 414. URL-адрес запроса слишком длинный - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь опубликовать с помощью ajax post в своем обработчике c # URL с 29376 символами.

Я получаю ошибку URL-адрес запроса слишком длинный HTTP-ошибка 414. URL-адрес запроса слишком длинный.Если я пытаюсь опубликовать URL-адрес меньшего размера тем же способом, система работает нормально.

что мне не хватает?

Вот так я и публикую в своем обработчике

  $.ajax({    
url: "MyHandlers/theHandler.ashx?method=mymethod",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        data: {
            var1: var1,
            var2: var2,
            var3: var3,
            var4: var4,
            var5: var5,
            var6: var6,
            var7: var7,
            var8: var8,
            var9: var9,
            var10: var10,
            var11: var11,
            var12: var12,
            var13: JSON.stringify(var13) //this is the var that is too long
        },
        success: function (result) {

        },
        error: function (result) {

        }
    });

мой метод c #

public string mymethod(int var1, int var2, string var3, string var4, int var5, string var6, string var7, string var8, string var9, string var10, string var11, string var12)
    {
         var jsonString = context.Request.Params["var13"];
    }

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Во-первых - вы не делаете POST.Вы делаете GET, как другие заявили в комментариях.Ошибка 414 означает, что запрашиваемый клиентом URI длиннее, чем сервер хочет интерпретировать.

Чаще всего причиной этой ошибки является именно то, что вы здесь делаете - отправка GET вместо POST.

Теперь, что такое GET?GET - это запрос, который полностью отправлен в URI.Сервер может интерпретировать значения из URI, например:

http://www.example.com?operation=add&value=MyValue

Таким образом, имея все больше и больше значений для передачи, вы получите слишком длинный URL.

А что такое POST?POST - это запрос, который не отправляется в URI.Весь контент отправляется в формате http.Например: вы отправляете содержимое:

{
    "FirstName" : "Jack",
    "SecondName": "London"
}

на этот адрес: http://www.example.com

Таким образом, вы должны отправить запрос POST вместо GET.Просто добавьте:

type: "POST"

https://api.jquery.com/jquery.post/

0 голосов
/ 04 декабря 2018

вам необходимо указать ваш запрос ajax, как показано ниже:

    $.ajax({
        url: "MyHandlers/theHandler.ashx?method=mymethod",
        contentType: "application/json; charset=utf-8",
        async: false,
        method: "POST",
        data: {
            var1: var1,
            var2: var2,
            var3: var3,
            var4: var4,
            var5: var5,
            var6: var6,
            var7: var7,
            var8: var8,
            var9: var9,
            var10: var10,
            var11: var11,
            var12: var12,
            var13: JSON.stringify(var13) //this is the var that is too long
        },
        dataType: "json"
    });
...