Сервлет AEM для получения значения заголовка запроса

Я создал сервлет и зарегистрировал сервлет с аннотацией felix, как показано ниже

public class BundleServlet extends SlingAllMethodsServlet
{

    @Override
    protected final void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response)
            throws ServletException
    {
        String valueFromQueryaram= request.getParameter("BundleId") //working 
        String valueFromHeader= request.getHeader("") // Not working
    }

Я хочу получить BundleId из другой системы. Я могу легко получить значение, используя getParameter, если они отправляются как параметр запроса. Но по соображениям безопасности значение BundleId не должно отображаться в браузере, поэтому необходимо получить значение другим способом. Проблема решена, когда они отправили BundleId в заголовке запроса. Но мой сервлет aem не получает значение от getHeader.

Есть ли другой способ прочитать значение, например, setAttribute?

Может кто сталкивался с такой ситуацией.

На всякий случай: вы передаете значение, отличное от "", в request.getHeader()? Потому что иначе ничего не должно возвращать. Вы имели ввиду request.getHeader("")? А также: использование заголовка не более безопасно, чем использование параметра. Вы можете использовать поддержку шифрования AEM для шифрования и дешифрования значения.

Jens 16.04.2018 12:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
844
1

Ответы 1

Не уверен, что отправка секрета через поле заголовка, а не параметр запроса, считается более безопасной. Оба сталкиваются с одинаковой угрозой безопасности.

Но чтобы ответить на ваш вопрос, ваш код правильный. Чтобы прочитать любое поле, которое вы видите в заголовке http, используйте request.getHeader (). Например, чтобы прочитать User-Agent из заголовка ниже, request.getHeader("User-Agent")) вернет «Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 64.0.3282.167 Safari / 537.36».

Возможные сбои:

  • Проверьте, настроили ли вы / clientheaders в dispatcher.any, ограничивая заголовки запроса
  • Проверьте, изменяет ли конфигурация apache заголовки в httpd.conf

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