Я создал сервлет и зарегистрировал сервлет с аннотацией 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?
Может кто сталкивался с такой ситуацией.




Не уверен, что отправка секрета через поле заголовка, а не параметр запроса, считается более безопасной. Оба сталкиваются с одинаковой угрозой безопасности.
Но чтобы ответить на ваш вопрос, ваш код правильный. Чтобы прочитать любое поле, которое вы видите в заголовке 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».
Возможные сбои:
На всякий случай: вы передаете значение, отличное от
"", вrequest.getHeader()? Потому что иначе ничего не должно возвращать. Вы имели ввидуrequest.getHeader("")? А также: использование заголовка не более безопасно, чем использование параметра. Вы можете использовать поддержку шифрования AEM для шифрования и дешифрования значения.