http请求/响应包格式

一、什么是http协议?

转载:http://blog.csdn.net/daijin888888/article/details/51025634

由w3c制订的一种网络应用层协议,定义了浏览器与web服务器之间通信的过程以及通信时所使用的数据格式。
        1)通信的过程
            step1,浏览器建立与web服务器之间的连接
            step2,浏览器将请求数据打包(生成请求数据包)并发送给web服务器。
            step3,web服务器将处理结果打包(生成响应数据包)并发送给浏览器。
            step4,web服务器关闭连接。
        如果浏览器要再发请求,需要重新建立新的连接。
        特点: 一次请求,一次连接
        优点:    web服务器可以利用有限的连接为尽可能多的客户端(浏览器)服务。
        2)数据格式

a,请求数据包

如:

[plain] view plain copy

  1. POST /web02/hello HTTP/1.1
  2. Host: localhost:8080
  3. User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  5. Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
  6. Accept-Encoding: gzip, deflate
  7. Connection: keep-alive
  8. Referer: http://localhost:8888/web02/hello_form.html
  9. Content-Type: application/x-www-form-urlencoded
  10. Content-Length: 16

请求行: 请求方式 请求资源路径 协议类型和版本
                消息头:
                    消息头是一些键值对,一般由w3c定义,浏览器与web服务器之间都可以发送,表示特定的某种含义,比如,浏览器可以发送"user-agent"消息头,告诉web服务器浏览器的类型和版本。
                实体内容:
                    只有当请求方式为post时才有值(请求参数),如果请求方式为get,请求参数会添加到请求资源路径的后面。

b,响应数据包

如:

[plain] view plain copy

  1. HTTP/1.1 200 OK
  2. Server: Apache-Coyote/1.1
  3. Content-Type: text/html;charset=utf-8
  4. Content-Length: 30
  5. Date: Thu, 05 Dec 2013 07:16:28 GMT

状态行: 协议类型和版本 状态码 状态描述
                    b1,什么是状态码
                        是一个三位数字,由w3c定义,表示服务器处理请求的状态。
                    b2,常见的状态码
                        200:  服务器处理请求正常。
                        404:  服务器依据请求路径找不到对应的资源。
                        500:  系统错误,服务器端的程序在运行过程当中出错了。
                        405: 服务器找不到可执行的方法来处理请求。        
                消息头:
                     服务器也可以发送一些消息头给浏览器,比如"content-type",告诉浏览器,服务器返回的数据类型和编码格式(字符集)。
                实体内容:
                    程序处理的结果,浏览器会将实体内容中的数据取出来,生成相应的页面。

二、请求方式

1)哪一些情况下,浏览器会发送get请求
            a,直接在浏览器地址栏输入某个地址
            b,点击链接
            c,表单使用默认的提交方式
        2)get请求的特点
            a,会将请求参数放到请求资源路径的后面,只能提交少量的数据(因为请求行最多只能存放2k左右的数据)。
            b,会将请求参数显示在浏览器地址栏,不安全(路由器会记录请求地址)。
        3)哪一些情况下,浏览器会发送post请求
            设置了表单的method属性值为post
        4)post请求的特点
            a,会将请求参数放到实体内容里面,能提交大量的数据。
            b,不会将请求参数显示在浏览器地址栏,相对安全(浏览器没有加密)。
        不管是get还是post,都不会对请求参数加密,所以如果是敏感数据,一般都需要加密处理(https)。

Http协议支持六种请求方法,即:
  0,GET
  1,HEAD
  2,PUT
  3,DELETE
  4,POST
  5,OPTIONS

  6.trace

但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。
  0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
  1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
  2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
  3,DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
  4,POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
  5,OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
  其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。

时间: 2024-10-28 11:18:44

http请求/响应包格式的相关文章

HTTP请求、响应报文格式

HTTP请求报文格式: HTTP请求报文主要由请求行.请求头部.请求正文3部分组成 1,请求行 由3部分组成,分别为:请求方法.URL(见备注1)以及协议版本,之间由空格分隔 请求方法包括GET.HEAD.PUT.POST.TRACE.OPTIONS.DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的 协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1 2,请求头部 请求头部为请求报文添加了一

JavaWeb_响应和请求数据包

Google浏览器 F12中Network->Header部分 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.ge

【报文】理解HTTP协议的Request/Response(请求响应)模型

[报文]理解HTTP协议的Request/Response(请求响应)模型 系列目录 [简介]"请求/响应"模型 http://www.cnblogs.com/engraver-lxw/p/7550514.html [原理]理解HTTP协议的Request/Response(请求响应)模型 http://www.cnblogs.com/engraver-lxw/p/7550691.html [报文]理解HTTP协议的Request/Response(请求响应)模型--当前 http:/

http请求数据的格式

最近看了tinyhttpd的服务器代理,看了看http请求数据包的格式和内容 http请求报包含三个部分: 请求行 + 请求头 + 数据体 请求行包含三个内容 method + request-URI + http-version method 包含有 post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unlock, trace, head 方法:

HTTP请求响应报文&amp;&amp;相关状态码&amp;&amp;GET_POST请求方法 总结

HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET /data/info.html HTTP/1.1 方法字段就是HTTP使用的请求方法,比如常见的GET/POST 其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别: HTTP1.0对于每个连接都的建立一次连接一次只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Ho

iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。

通过该方式同时也可以实现底层网络库AFNetworking及ASIHTTPRequest的代理设置.达到我们开发时的抓包分析及 IP地址指定访问开发/仿真任一台提供API接口服务器的目的. 首先下载Charles并配置我们的开发机iPhone终端的代理IP及Charles配置一下, 步骤如下: 1).取得mac本机的IP地址:如下图中的:192.168.1.106 如图: 2).通过下载的Charles来配置我们的代理服务器: 如下图: 将我们的开发机iphone终端代理设置成我们mac本的ip

云计算之路-阿里云上:超过70秒的请求抓包分析

超过70秒的请求是通过分析IIS日志发现的: 10.159.63.104是SLB的内网IP. 通过Wireshark抓包分析请求是9:22:21收到的(tcp.stream eq 23080): 09:22:21.299838000 10.159.63.104 10.161.241.208 HTTP 291 GET /eastsea/p/3764040.html HTTP/1.0 这个请求响应内容的长度是:Content-Length 1154110(1.1MB) 云服务器(ECS)在收到请求后

基于请求响应的简单介绍

Http请求响应过程: Http是基于TCP/IP之上的协议. 基本流程: 浏览器      -------请求行/请求头/请求体---------> Web服务器 --> 应用代码(servlet/JSP/.html) <----- 响应状态/响应头/响应体----- 请求行: GET/POST URL?querystring请求头: Content-Length/Connection/User-Agent/Accept-Language/Referer/Cookie/Host...请

iOS开发之Socket通信实战--Request请求数据包编码模块

实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncSocket来进行长连接连接和传输数据,该第三方地 址:https://github.com/robbiehanson/CocoaAsyncSocket,读者可以自行google或者baidu搜索 这个库的用法,网上有很多资料,而且用法不难. 在一些对Socket通信使用需求不是很高的应用中,比如需要