HTTP报文分析

来源:互联网 发布:mac搜狗怎么打罗马数字 编辑:程序博客网 时间:2024/06/05 20:52

请求报文:

(1)请求行:请求方法(GET/POST等) 请求URI  HTTP/协议版本

(2)请求头(header):由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔

  • Host:服务端的主机名
  • User-Agent:客户端浏览器信息
  • Accept:客户端能接收的mine类型
  • Accept-Encoding:是否支持流压缩
  • Accept-Charset:客户端字符编码集
  • Connection:Keep-Alive 长连接
  • ...................

中间有空行------最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头

(3)请求数据(body):请求数据不在GET方法中使用而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

 

响应报文:

(1)状态行:HTTP协议版本号  状态码  状态消息状态消息  HTTP/1.1 200 OK

状态码类型:

  • 1xx:指示信息--表示请求已接收,继续处理。
  • 2xx:成功--表示请求已被成功接收、理解、接受。
  • 3xx:重定向--要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误--请求有语法错误或请求无法实现。
  • 5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明如下。

  • 200 OK:客户端请求成功。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
(2)消息报头
  • Date
  • Content-Type
  • Content-Length
  • .............

(3)响应正文


GET和POST的区别:

(1)我们可以看到GET请求消息体为空,POST请求带有消息体。
(2)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456。POST方法是把提交的数据放在HTTP包的body中。
(3)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。


参考:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html


原创粉丝点击