В Spring boot настроено использование Jetty в качестве встроенного сервера. Приложение Angular имеет код TypeScript, который вызывает конечную точку REST и отправляет объект json в качестве полезной нагрузки. Размер объекта json будет варьироваться от 1 МБ до 10 МБ в зависимости от выбора пользователя в браузере.
Мое приложение весенней загрузки работает на виртуальной машине Azure под управлением Linux (CentOS).
Для некоторых запросов я получите ошибку HTTP 413: размер запроса слишком велик.
Я провел несколько поисков и нашел 2 механизма для настройки приложения весенней загрузки для преодоления этого ограничения.
Вариант 1.
Измените ограничение размера запроса в application.properties, используя это свойство
server.jetty.max-http-post-size=20971520 # Максимальный размер в байтах сообщения HTTP или содержимого размещения.
Вариант 2
Переопределить maxFormContentSize причала, используя некоторый Java-код в основном классе приложения
Код: Выделить всё
@Bean
public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
JettyEmbeddedServletContainerFactory jettyContainer =
new JettyEmbeddedServletContainerFactory();
org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer serverContainer = (org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer)jettyContainer.getEmbeddedServletContainer();
serverContainer.getServer().setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", "20971520");
return jettyContainer;
}
Есть ли лучший способ решить эту проблему?
Примечание. Эту ошибку я вижу только в среде виртуальных машин Azure, на которой работает CentOS. На моем компьютере под управлением Windows 10 я не вижу этой ошибки.
Обновление: я заметил, что при перезагрузке веб-сервера самый первый запрос проходит, но последующие запросы терпят неудачу. Это говорит о том, что на сервере есть какой-то буфер или кеш, который не очищается вовремя. Правильно ли я понимаю?
Подробнее здесь: https://stackoverflow.com/questions/492 ... -angular-4
Мобильная версия