我的JSP返回202(sc_accept)状态,但呼叫者获得200(SC_OK)状态



我正在访问tomcat上的简单JSP页面:

<%@ page import = "java.io.Writer" %>
<%
try {
    Writer outWriter = response.getWriter ();
    outWriter.write ("something");
    outWriter.flush ();
    response.setStatus (HttpServletResponse.SC_ACCEPTED);
}
catch (Throwable t) {
  response.sendError (HttpServletResponse.SC_BAD_REQUEST, t.getMessage ());
}%>

但是,当我使用curl测试此页面时,我会得到200个响应代码,而不是预期的202:

$ curl -i "http://localhost:8090/somepath/somefile.jsp"
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=52......................AD2; Path=/somepath/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Mon, 05 Jun 2017 08:09:36 GMT
something

如果我从响应中删除内容:

<%@ page import = "java.io.Writer" %>
<%
try {
    //Writer outWriter = response.getWriter ();
    //outWriter.write ("something");
    //outWriter.flush ();
    response.setStatus (HttpServletResponse.SC_ACCEPTED);
}
catch (Throwable t) {
  response.sendError (HttpServletResponse.SC_BAD_REQUEST, t.getMessage ());
}%>

我得到所需的响应代码:

$ curl -i "http://localhost:8090/somepath/somefile.jsp"
HTTP/1.1 202 Accepted
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=52......................AD2; Path=/somepath/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 2
Date: Mon, 05 Jun 2017 08:12:57 GMT

是否有一些tomcat配置更改响应代码?

我的实际目标是模拟某些第三方Web API的响应,该响应预计将返回202响应代码 一些简短的内容字符串以成功的请求。

我的服务器称为此API,期望有202个响应。我想我可以更改它以接受200和202响应,但是我希望我的代码与第三方API的文档匹配。

将setstatus((移至JSP的顶部。查看编译的JSP,以查看编译器编写代码的方式。一旦设定了状态,就无法覆盖。flush((方法可能已将状态设置为200。

最新更新