我创建了一个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?
任何人都可以遇到这种情况。
答案 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>
可能的失败: