我正在尝试访问Java Servlet过滤器中的两个http请求参数,这里没什么新东西,但是很惊讶地发现参数已经被消耗了!因此,它在过滤器链中不再可用.
似乎只有在参数进入POST请求主体(例如表单提交)时才会出现这种情况.
有没有办法读取参数而不消耗它们?
到目前为止,我只找到了这个引用:使用request.getParameter的Servlet过滤器丢失了Form数据.
谢谢!
我有这个代码:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
logger.info("Filter start...");
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String ba = getBaId(getBody(httpRequest));
if (ba == null) {
logger.error("Wrong XML");
httpResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);
} else {
if (!clients.containsKey(ba)) {
clients.put(ba, 1);
logger.info("Client map : init...");
} else {
clients.put(ba, clients.get(ba).intValue() + 1);
logger.info("Threads for " + ba + " = " + clients.get(ba).toString());
}
chain.doFilter(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
和这个web.xml(包缩短和名称更改,但它看起来相同)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<filter>
<filter-name>TestFilter</filter-name> …
Run Code Online (Sandbox Code Playgroud) 如何更改 java 过滤器中的请求正文以防止XSS
攻击?我构建HttpServletRequestWrapper
并用于getparameter
更改主体,但出现流关闭异常。