HTTP基本身份验证:Tomcat与Jetty

时间:2012-05-24 15:36:56

标签: java tomcat jetty basic-authentication

我在我的servlet中使用(简单)基本身份验证,适用于Jetty 7.6服务器但是使用Tomcat 6.0.35我在尝试发送未经授权的响应时显示用户名/密码表单时出错在浏览器中:

java.lang.IllegalStateException
org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:421)

我的servlet中的代码如下所示:

response.setHeader("WWW-Authenticate", "Basic realm=\"" + realm + "\"");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);

错误发生在代码示例的第二行。 我没有使用< security-constraint>在web.xml中。它应该是一个非常非常简单的身份验证。

知道为什么Tomcat不工作但是Jetty会这样做吗?

1 个答案:

答案 0 :(得分:0)

确保:

  1. 在servlet运行之前,没有任何生成输出的过滤器
  2. 您在请求期间只调用一次response.setStatus / response.sendError
  3. 您没有刷新响应缓冲区
  4. 上述任何一项都可以在您预期之前提交回复。