AEM Servlet获取请求标头值

时间:2018-04-15 18:03:58

标签: java servlets aem

我创建了一个servlet并使用felix注释注册了servlet,如下所示

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 servlet没有通过getHeader接收值。

有没有其他方法可以读取值,例如setAttribute?

任何人都可以遇到这种情况。

1 个答案:

答案 0 :(得分: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'< / p>

enter image description here

可能的失败:

  • 检查您是否在dispatcher.any上配置/ clientheaders限制请求标头
  • 检查apache配置是否正在修改httpd.conf
  • 中的标头