【发布时间】:2013-04-10 13:19:06
【问题描述】:
我们正在尝试在我们的网络应用程序中使用 ESAPI。我们在 servlet 中有以下函数。
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.setHeader(SearchConstants.CACHE_CONTROL_HEADER,
SearchConstants.MAX_AGE_ZERO);
response.setHeader(SearchConstants.CACHE_CONTROL_HEADER,
SearchConstants.NO_CACHE);
response.setDateHeader(SearchConstants.EXPIRES_HEADER, 0);
response.setHeader(SearchConstants.PRAGMA_HEADER, "no cache");
result = processRequest(request, response);
if (SearchConstants.XSLT_ERROR_MSG.equals(result)) {
LOGGER.error("XSLT ERROR FOR QUERY STRING: "
+ request.getQueryString());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} else if (SearchConstants.SEARCH_PAGE_MISSING_MSG.equals(result)) {
LOGGER.error("NOT FOUND ERROR FOR QUERY STRING: "
+ request.getQueryString());
response.sendError(HttpServletResponse.SC_NOT_FOUND);
} else {
final PrintWriter out = response.getWriter();
out.println(result); // this works
// out.println(ESAPI.encoder().encodeForHTML(result));
}
}
在上面的代码中,如果我使用out.println(ESAPI.encoder().encodeForHTML(result));,这实际上会将 html 打印为浏览器上的文本。即它显示像简单的文本<html> 其他内容.. </html>,而不是呈现 html 页面。 result 只不过是需要在客户端渲染的 html 内容。
我们在这里做错了什么。请提供一些指示。我们如何在这里实现编码?
【问题讨论】:
标签: esapi