Максимальная длина параметра данных send () в сообщении XMLHttpRequest

Есть ли задокументированная максимальная длина строковых данных, которую вы можете использовать в методе отправки XMLHttpRequest для основных реализаций браузера?

У меня возникла проблема с ошибкой сообщения JavaScript XMLHttpRequest в FireFox 3, когда данные превышают примерно 3 КБ. Я предполагал, что сообщение будет вести себя так же, как обычное сообщение формы.

В документах W3C упоминается, что параметр данных метода отправки - это DOMString, но я не уверен, как это реализуют основные браузеры.

Вот упрощенная версия моего JavaScript, если bigText больше 3k, он не работает, в противном случае он работает ...

var xhReq = createXMLHttpRequest();

function createXMLHttpRequest() {
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new XMLHttpRequest(); } catch(e) {}
  alert("XMLHttpRequest not supported");
  return null;
}

function mySubmit(id, bigText) {
  var url    = "SubmitPost.cfm";
  var params = "id = " + id + "&bigtext = " + encodeURI(bigText);

  xhReq.open("POST", url, true);

  //Send the header information along with the request
  xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhReq.setRequestHeader("Content-length", params.length);
  xhReq.setRequestHeader("Connection", "close");

  xhReq.onreadystatechange = onPostSubmit;
  xhReq.send(params);
}

function onPostSubmit() {

  if (xhReq.readyState==4 || xhReq.readyState= = "complete")
     { 
     if (xhReq.status != 200)
        {
        alert('BadStatus');
        return;
        }
    } 
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
0
39 654
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я считаю, что максимальная длина зависит не только от браузера, но и от веб-сервера. Например, HTTP-сервер Apache имеет Директива LimitRequestBody, который позволяет хранить от 0 до 2 ГБ данных.

да, источник здесь httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody

Anja Ishmukhametova 19.05.2020 04:48

Согласно Спецификация XMLRPC, единственные реальные ограничения - это размер целых и двойных чисел.

Вы не указываете, как это происходит, но ваша кодировка неверна. Вы должны использовать encodeURIComponent, а не encodeURI.

По умолчанию максимальный размер тела объекта запроса на клиенте, вероятно, ограничен только доступной памятью. Сервер, как уже указывалось, может отклонять тела сущностей более определенного размера. Например, IIS 6 и 7 имеют ограничение по умолчанию в 200 КБ.

Конфигурация для Nginx должна выполняться в client_max_body_size и может быть установлена ​​на любое значение, например, 20 м для 20 МБ или 0, чтобы отключить его.

vim /etc/nginx/nginx.conf

Сохраните и закройте файл, примените изменения к nginx.conf, затем проверьте -t и отправьте сигнал -s для перезагрузки:

/usr/sbin/nginx -t
/usr/sbin/nginx -s reload

Синтаксис: client_max_body_size size;

По умолчанию: client_max_body_size 1 м;

Контекст: http, сервер, местоположение

Устанавливает максимально допустимый размер тела запроса клиента, указанный в поле заголовка запроса Content-Length. Если размер в запросе превышает настроенное значение, клиенту возвращается ошибка 413 (Request Entity Too Large). Имейте в виду, что браузеры не могут правильно отображать эту ошибку. Установка размера на 0 отключает проверку размера тела клиентского запроса.

Другие вопросы по теме