【发布时间】:2010-10-25 07:18:56
【问题描述】:
是否可以在使用 Java Servlet API (HttpServletResponse) 处理整个请求后发送“100 Continue”HTTP 状态代码,然后再发送一些其他状态代码?
我找不到任何明确的“否”答案,尽管 API 似乎不支持它。
【问题讨论】:
标签: java http servlets http-status-code-100
是否可以在使用 Java Servlet API (HttpServletResponse) 处理整个请求后发送“100 Continue”HTTP 状态代码,然后再发送一些其他状态代码?
我找不到任何明确的“否”答案,尽管 API 似乎不支持它。
【问题讨论】:
标签: java http servlets http-status-code-100
我假设您的意思是“100 继续”。
答案是:不,你不能(至少不是它的预期方式,如provisional response)。通常,当请求需要时,servlet 引擎会自动执行此操作。当然,这使得 servlet 阻止发送 100 状态是不可能的——这个问题是 Servlet API 中的一个已知问题,并且已经被人们所熟知。
【讨论】:
我知道Jetty will wait until getReader() or getInputStream() is called 在发送 100 之前。我认为这是您正在寻找的行为。我不知道Tomcat是做什么的。
【讨论】:
您的意思是问如何在收到完整请求之前发送状态代码,以因缺少标头字段而中断正在进行的请求?似乎这对于标准 servlet 是不可能的。
您使用的是什么服务器?
某些服务器的 servlet 扩展可能允许这样做,例如Tomcat's Comet servlet 可能会在标头可用于处理时发送 EventType.BEGIN,这可能允许您中断没有正确身份验证的 PUT。
或者,您的服务器可能有一个插件来拒绝基于标头的请求。
【讨论】:
你的意思是状态码100?
API 确实支持发送 SC_CONTINUE。
【讨论】: