HTTP 格式

来源:互联网 发布:cv配音软件下载 编辑:程序博客网 时间:2024/05/17 08:34

HTTP请求格式:
<request-line>
<headers>
<blank line>
[<request-body>]
说明:第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本.
      紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息.
      之后是一个空行.
      再后面可以添加任意的其他数据[称之为主体(body)].
例1 GET请求:

GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
DontTrackMeHere: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: www.google.cn
Connection: Keep-Alive
说明:请求的第一部分说明了该请求是一个GET请求.该行的第二部分是一个斜杠(/),用来说明请求的是该域名的根目录.该行的最后一部分说明使用的是HTTP1.1版本(另一个可选荐是1.0).
      第2行是请求的第一个首部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送.Connection,通常将浏览器操作设置为Keep-Alive
      第三部分,空行,即使不存在请求主体,这个空行也是必需的.

例2 POST请求:

POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley
说明:请求行开始处的GET改为POST,以表示不同的请求类型.
      Content-Type说明了请求主体的内容是如何编码的.浏览器始终以application/x-www-form-urlencoded的格式编码来传送数据,这是针对简单URL编码的MIME类型.Content-Length说明了请求主体的字节数.
      最后请求主体.名称-值对的形式.

HTTP响应格式:
<status-line>
<headers>
<blank line>
[<response-body>]

例:

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>
说明:HTTP状态码200,找到资源,并且一切正常.
      Date:生成响应的日期和时间.
      Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
      HTML源文体.

HTTP中相关信息:

jsp 中 request.getHeader() 相关详细
System.out.println("rotocol: " + request.getProtocol()); 
System.out.println("Scheme: " + request.getScheme()); 
System.out.println("Server Name: " + request.getServerName() ); 
System.out.println("Server Port: " + request.getServerPort()); 
System.out.println("rotocol: " + request.getProtocol()); 
System.out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo()); 
System.out.println("Remote Addr: " + request.getRemoteAddr()); 
System.out.println("Remote Host: " + request.getRemoteHost()); 
System.out.println("Character Encoding: " + request.getCharacterEncoding()); 
System.out.println("Content Length: " + request.getContentLength()); 
System.out.println("Content Type: "+ request.getContentType()); 
System.out.println("Auth Type: " + request.getAuthType()); 
System.out.println("HTTP Method: " + request.getMethod()); 
System.out.println("path Info: " + request.getPathInfo()); 
System.out.println("path Trans: " + request.getPathTranslated()); 
System.out.println("Query String: " + request.getQueryString()); 
System.out.println("Remote User: " + request.getRemoteUser()); 
System.out.println("Session Id: " + request.getRequestedSessionId()); 
System.out.println("Request URI: " + request.getRequestURI()); 
System.out.println("Servlet Path: " + request.getServletPath()); 
System.out.println("Accept: " + request.getHeader("Accept")); 
System.out.println("Host: " + request.getHeader("Host")); 
System.out.println("Referer : " + request.getHeader("Referer")); 
System.out.println("Accept-Language : " + request.getHeader("Accept-Language")); 
System.out.println("DontTrackMeHere : " + request.getHeader("DontTrackMeHere")); 
System.out.println("User-Agent : " + request.getHeader("User-Agent")); 
System.out.println("Connection : " + request.getHeader("Connection")); 
System.out.println("Cookie : " + request.getHeader("Cookie")); 
System.out.println("Created : " + session.getCreationTime()); 
System.out.println("LastAccessed : " + session.getLastAccessedTime());