Я работаю над проектом, который использует встроенный Jetty (к сожалению, я просто «унаследовал» серверную часть проекта и не очень хорошо знаком с использованием Jetty и его конфигурацией).Как настроить встроенный Jetty для обработки запросов предварительной предвыборки?
Странный случай просто выскочила - я сделаю все возможное, чтобы описать:
Веб-интерфейс (с помощью AngularJS, из другого домена, поэтому используется CORS) отправляет запрос POST об изменении размера состояние чего-то на сервере. Это работало в какой-то момент в прошлом (последнее использовалось, вероятно, месяц назад).
Вчера это перестало работать. Проверяя вызовы REST, я увидел, что сначала выполняется запрос OPTIONS. Тип контента POST - application/json, поэтому на основе прочитанного я считаю это правильным. Я не уверен, почему это было ранее не отправлено - возможно, что у компании недавно была обновлена версия Chrome, а старая версия не отправляла запросы на предполетные вопросы, но это всего лишь предположение. В любом случае, вот что я думаю, что соответствующий код в моем приложении для настройки Jetty для CORS:
FilterHolder holder = new FilterHolder(new CrossOriginFilter());
holder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
holder.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_CREDENTIALS_HEADER, "true");
appHandler.addFilter(holder, "/*", EnumSet.of(DispatcherType.REQUEST));
Все отлично работает для запросов POST. Я могу проверить это, запустив Chrome с помощью флага --disable-web-security. Запрос OPTIONS не отправляется, и POST работает так, как следует.
Мое мышление заключается в том, что, поскольку он работает для POST, это не проблема авторизации или безопасности - это просто, что Jetty неправильно настроен для обработки запроса предварительной проверки (он просто возвращает 401).
Я не могу найти много документации для встроенного Jetty и какой из констант CrossOriginFilter использовать в качестве ключей свойств в вызовах setInitParameter (и, кроме того, поскольку второй аргумент этого вызова метода является строкой, у меня действительно есть не знаю, как форматировать значения).
Какие параметры следует устанавливать на CrossOriginFilter для дескрипторов свойств запросов OPTIONS? И если я сказал что-нибудь ошибочное выше или сделал какие-то ложные предположения, пожалуйста, исправьте меня! У меня очень ограниченный опыт в этом.
Вы решили эту проблему? Если да, можете подать здесь ответ? – sag