是否可以在使用 Java Servlet API (HttpServletResponse) 处理整个请求后发送“100 Continue”HTTP 状态代码,然后再发送一些其他状态代码?
我找不到任何明确的“否”答案,尽管 API 似乎不支持它。
是否可以在使用 Java Servlet API (HttpServletResponse) 处理整个请求后发送“100 Continue”HTTP 状态代码,然后再发送一些其他状态代码?
我找不到任何明确的“否”答案,尽管 API 似乎不支持它。
我假设您的意思是“100 继续”。
答案是:不,你不能(至少不是它的预期方式,作为临时响应)。通常,当请求需要时,servlet 引擎会自动执行此操作。当然,这使得 servlet 不可能阻止发送 100 状态——这个问题是 Servlet API 中的一个已知问题,并且以现在的感觉已经众所周知。
我知道Jetty 会等到调用 getReader() 或 getInputStream()后再发送 100。我认为这是您正在寻找的行为。我不知道Tomcat是做什么的。
您的意思是问如何在收到完整请求之前发送状态代码,以因缺少标头字段而中断正在进行的请求?似乎这对于标准 servlet 是不可能的。
你用的是什么服务器?
某些服务器的 servlet 扩展可能允许这样做,例如Tomcat 的 Comet servlet 可能会在标头可用于处理时发送 EventType.BEGIN,这可能允许您中断没有正确身份验证的 PUT。
或者,您的服务器可能有一个插件来拒绝基于标头的请求。
你的意思是状态码100吗?
API确实支持发送 SC_CONTINUE 。