Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP基本身份验证:Tomcat vs Jetty_Java_Tomcat_Jetty_Basic Authentication - Fatal编程技术网

Java HTTP基本身份验证:Tomcat vs Jetty

Java HTTP基本身份验证:Tomcat vs Jetty,java,tomcat,jetty,basic-authentication,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-

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

知道为什么Tomcat不工作而Jetty工作吗?

确保:

  • 在servlet运行之前,没有任何过滤器生成输出
  • 在请求过程中,您只调用了一次response.setStatus/response.senderError
  • 您没有刷新响应缓冲区

  • 上述任何一项都可以在您期望响应之前提交响应。

    在响应之后和之前,您会做什么。sendError?您是否向servlet outputstream写入了一些内容?请发布任何与响应管理相关的代码。不,在这两行之前或之后都没有写入响应。我不明白为什么它在Jetty中有效而在Tomcat中无效。Thx.@chrise在servlet之前运行的任何过滤器呢?你能发布完整的堆栈跟踪吗?@Christopher Schultz:谢谢你的提示。在response.sendError调用之前提交了响应。Tomcat正在检查,但Jetty没有。我正在寻找整个堆栈跟踪。我的失误是,我调用了两次设置响应错误的方法,因此响应当然是提交的,第二次调用引发了异常。Jetty不在乎程序员的失败。因为这个问题没有有用的答案,我将删除它。谢谢你的提示,你们都走对了路。