Java 使用ServletAPI,如何确定请求是HTTP/1.0还是HTTP/1.1?
我正在修复一个只在客户端使用HTTP/1.0(并且是秘密的,Internet Explorer在防火墙后面代理)时才出现的错误。详情如下: 在任何情况下,正确的解决方案是在请求为HTTP/1.0时关闭功能(GZip内容压缩)。然而,在浏览了ServletAPI文档,甚至Jetty源代码之后,我找不到任何地方可以公开这些信息 那么,有没有办法确定这一点?我使用的是ServletAPI2.5 提前谢谢Java 使用ServletAPI,如何确定请求是HTTP/1.0还是HTTP/1.1?,java,http,servlets,Java,Http,Servlets,我正在修复一个只在客户端使用HTTP/1.0(并且是秘密的,Internet Explorer在防火墙后面代理)时才出现的错误。详情如下: 在任何情况下,正确的解决方案是在请求为HTTP/1.0时关闭功能(GZip内容压缩)。然而,在浏览了ServletAPI文档,甚至Jetty源代码之后,我找不到任何地方可以公开这些信息 那么,有没有办法确定这一点?我使用的是ServletAPI2.5 提前谢谢 request.getProtocol() will return "HTTP/1.0" or "
request.getProtocol() will return "HTTP/1.0" or "HTTP/1.1"
下面是一个示例,在本地tomcat中执行
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class ShowRequestHeaders extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Servlet Example: Showing Request Headers";
out.println(ServletUtilities.headWithTitle(title) +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
"<B>Request Method: </B>" +
request.getMethod() + "<BR>\n" +
"<B>Request URI: </B>" +
request.getRequestURI() + "<BR>\n" +
"<B>Request Protocol: </B>" +
request.getProtocol() + "<BR><BR>\n" +
"<TABLE BORDER=1 ALIGN=CENTER>\n" +
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH>Header Name<TH>Header Value");
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String headerName = (String)headerNames.nextElement();
out.println("<TR><TD>" + headerName);
out.println(" <TD>" + request.getHeader(headerName));
}
out.println("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
import java.io.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
导入java.util.*;
公共类ShowRequestHeaders扩展了HttpServlet{
公共无效数据集(HttpServletRequest请求,
HttpServletResponse(响应)
抛出ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
String title=“Servlet示例:显示请求头”;
out.println(ServletUtilities.headWithTitle(title)+
“\n”+
“”+标题+“\n”+
“请求方法:”+
request.getMethod()+“
\n”+
“请求URI:”+
request.getRequestURI()+“
\n”+
“请求协议:”+
request.getProtocol()+“
\n”+
“\n”+
“\n”+
“标题名称标题值”);
枚举headerNames=request.getHeaderNames();
while(headerNames.hasMoreElements()){
字符串headerName=(字符串)headerName.nextElement();
out.println(“+headerName”);
out.println(“+request.getHeader(headerName));
}
out.println(“\n”);
}
public void doPost(HttpServletRequest请求,
HttpServletResponse(响应)
抛出ServletException、IOException{
doGet(请求、响应);
}
}