Http协议的方法讲解

HTTP协议请求相应中有8个不同的请求方法:分别是Get、POST、HEAD、PUT、DELETE、OPTIONS、TRACE和CONNECT;

1. GET方法

[plain] view plain copy 
  1. 它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。
  2. GET请求中,永远不会包含呈现数据。

来看一个GET请求头:

[plain] view plain copy 
  1. GET /C/9/5/1_kfanning.jpg HTTP/1.1
  2. Host: avatar.csdn.net
  3. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
  4. Accept: image/png,image/*;q=0.8,*/*;q=0.5
  5. Accept-Language: zh-tw,zh-cn;q=0.8,zh;q=0.6,en-us;q=0.4,en;q=0.2
  6. Accept-Encoding: gzip, deflate
  7. Referer: http://blog.csdn.net/kfanning/article/details/6062118
  8. Cookie: __utma=17226283.527580837.1375760870.1390443382.1390449326.168;
  9. __utmz=17226283.1390449326.168.129.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=http%20method;
  10. __gads=ID=9b9423f364ccda56:T=1375762746:S=ALNI_MZ1Sxf9s2CJPA7xqkv_IqcSTDxWKA; UN=jeckykang;
  11. uuid_tt_dd=-3422551472986240703_20131209; __message_sys_msg_id=2270; __message_gu_msg_id=0;
  12. __message_cnel_msg_id=0; __message_in_school=0; lzstat_uv=14049921881443061361|2955225;
  13. CloudGuest=Q/26rJhRxgVBdK86B7bhjJs74GajISRoJhW4uOXM5dxyb18V1goLQAla2v8nTchg1rOz5XFIaB6cqf+0KWjq8EV+c2Sr
  14. /G77BZ74uhwyR6SrrtMkWnpIpFOUsgdSVr/IyJQhuouLZ9mlbFMvdJu0A1m2dav+lJex1dxxHYFEB9FRt7ALVYxi/jxLcZzSjQ6j;
  15. _JQCMT_ifcookie=1; _JQCMT_browser=0654c777635ddcb3e6c316847e59c812; CloudSiteTheme=Default;
  16. __message_district_code=310000; UserName=jeckykang; UserInfo=VBm2%2f0wC5LAQ3FbSGMzLl9N53e%2bSM4sIblk33N
  17. ACXRqaIh8WQkLSDEHD5bO0u3PvsfxZDCGq%2fR3oap%2bcDj7UJ2LgWwF2xDtN2LXlEx9Rzo1SUGNqHTSk22U5RJ7PLH1l;
  18. UserNick=IronRabbit; access-token=0f5903c1-6ec0-42ad-905f-4db4cd247819; AU=065; __utmc=17226283;
  19. BAIDU_DUP_lcr=http://www.baidu.com/; dc_tos=mzu62s; dc_session_id=-bjdkmd|12; __utmb=17226283.4.10.1390449326
  20. Connection: keep-alive

上面第一行:请求方法(GET),URL,协议,版本。这是它的结构。

2. POST方法

[plain] view plain copy 
  1. 向URL指定的资源提交数据或附加新的数据。

一般来说,提交表单数据都用POST方法。从如下列表中可以看到GET和POST的区别:

3. PUT方法

[plain] view plain copy 
  1. 跟POST方法很像,也是向服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有。PUT方法请求服务器去把请求里的实体存储在请求
  2. URI(Request-URI)标识下。如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源
  3. 实体的最新修改版本。如果请求RI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此
  4. URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent)发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应
  5. 该发送200(Ok)或者204(无内容)响应。如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不
  6. 理解和不能实现的Content-*(如:Content-Range)头域,并且必须返回501(没有被实现)响应。如果请求穿过一个缓存(cache),并且此请求
  7. URI(Request-URI)指示了一个或多个当前缓存的实体,那么这些实体应该被看作是旧的。PUT方法的响应是不可缓存的。POST方法和PUT方法请求最根本的区别是请
  8. 求URI(Request-URI)的含义不同。POST请求里的URI 指示一个能处理请求实体的资源(译注:此资源可能是一段程序,如jsp 里的servlet) 。
  9. 此资源可能是一个数据接收过程,一个网关(gateway,译注:网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就
  10. 是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI意指什么,并且服务器不能把此请求应用于
  11. 其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。一个单独的资
  12. 源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URI的PUT请求
  13. 可能会导致其资源的其它URI请求被源服务器重定义。HTTP/1.1没有定义PUT方法对源服务器的状态影响。PUT请求必须遵循8.2节中的消息传送的要求。除非特别指出,
  14. PUT方法请求里的实体头域应该被用于资源的创建或修改。

4. HEAD方法

[plain] view plain copy 
  1. 只请求页面的首部。

5. DELETE方法

[plain] view plain copy 
  1. 删除服务器上的某资源。

6. OPTIONS方法

[plain] view plain copy 
  1. 它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息。

以上6种方法中的4种可以和数据库的CRUD操作对应起来:

[plain] view plain copy 
  1. Create: PUT
  2. Read: GET
  3. Update: POST
  4. Delete: DELETE

7. TRACE方法

[plain] view plain copy 
  1. TRACE方法被用于激发一个远程的,应用层的请求消息回路(译注:TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,
  2. 这就是一个请求响应回路)。
  3. 最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体。TRACE方法允许客户端去了
  4. 解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。Via头域值有特殊的用途,因为它可以作为请求链的跟踪信息。
  5. 利用Max-Forwards头域允许客户端限制请求链的长度,这是非常有用的,因为可以利用此去测试代理链在无限循环里转发消息。如果请求是有效的,响应应
  6. 该在实体主体里包含整个请求消息,并且响应应该包含一个Content-Type头域值为”message/http”的头域。此方法的响应不能被缓存。

8. CONNECT方法

[plain] view plain copy 
  1. 把请求连接转换到透明的TCP/IP通道。
Http协议的方法讲解

2018年02月03日 15:49:27

阅读数:312

HTTP协议请求相应中有8个不同的请求方法:分别是Get、POST、HEAD、PUT、DELETE、OPTIONS、TRACE和CONNECT;

1. GET方法

[plain] view plain copy 
  1. 它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。
  2. GET请求中,永远不会包含呈现数据。

来看一个GET请求头:

[plain] view plain copy 
  1. GET /C/9/5/1_kfanning.jpg HTTP/1.1
  2. Host: avatar.csdn.net
  3. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
  4. Accept: image/png,image/*;q=0.8,*/*;q=0.5
  5. Accept-Language: zh-tw,zh-cn;q=0.8,zh;q=0.6,en-us;q=0.4,en;q=0.2
  6. Accept-Encoding: gzip, deflate
  7. Referer: http://blog.csdn.net/kfanning/article/details/6062118
  8. Cookie: __utma=17226283.527580837.1375760870.1390443382.1390449326.168;
  9. __utmz=17226283.1390449326.168.129.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=http%20method;
  10. __gads=ID=9b9423f364ccda56:T=1375762746:S=ALNI_MZ1Sxf9s2CJPA7xqkv_IqcSTDxWKA; UN=jeckykang;
  11. uuid_tt_dd=-3422551472986240703_20131209; __message_sys_msg_id=2270; __message_gu_msg_id=0;
  12. __message_cnel_msg_id=0; __message_in_school=0; lzstat_uv=14049921881443061361|2955225;
  13. CloudGuest=Q/26rJhRxgVBdK86B7bhjJs74GajISRoJhW4uOXM5dxyb18V1goLQAla2v8nTchg1rOz5XFIaB6cqf+0KWjq8EV+c2Sr
  14. /G77BZ74uhwyR6SrrtMkWnpIpFOUsgdSVr/IyJQhuouLZ9mlbFMvdJu0A1m2dav+lJex1dxxHYFEB9FRt7ALVYxi/jxLcZzSjQ6j;
  15. _JQCMT_ifcookie=1; _JQCMT_browser=0654c777635ddcb3e6c316847e59c812; CloudSiteTheme=Default;
  16. __message_district_code=310000; UserName=jeckykang; UserInfo=VBm2%2f0wC5LAQ3FbSGMzLl9N53e%2bSM4sIblk33N
  17. ACXRqaIh8WQkLSDEHD5bO0u3PvsfxZDCGq%2fR3oap%2bcDj7UJ2LgWwF2xDtN2LXlEx9Rzo1SUGNqHTSk22U5RJ7PLH1l;
  18. UserNick=IronRabbit; access-token=0f5903c1-6ec0-42ad-905f-4db4cd247819; AU=065; __utmc=17226283;
  19. BAIDU_DUP_lcr=http://www.baidu.com/; dc_tos=mzu62s; dc_session_id=-bjdkmd|12; __utmb=17226283.4.10.1390449326
  20. Connection: keep-alive

上面第一行:请求方法(GET),URL,协议,版本。这是它的结构。

2. POST方法

[plain] view plain copy 
  1. 向URL指定的资源提交数据或附加新的数据。

一般来说,提交表单数据都用POST方法。从如下列表中可以看到GET和POST的区别:

3. PUT方法

[plain] view plain copy 
  1. 跟POST方法很像,也是向服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有。PUT方法请求服务器去把请求里的实体存储在请求
  2. URI(Request-URI)标识下。如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源
  3. 实体的最新修改版本。如果请求RI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此
  4. URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent)发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应
  5. 该发送200(Ok)或者204(无内容)响应。如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不
  6. 理解和不能实现的Content-*(如:Content-Range)头域,并且必须返回501(没有被实现)响应。如果请求穿过一个缓存(cache),并且此请求
  7. URI(Request-URI)指示了一个或多个当前缓存的实体,那么这些实体应该被看作是旧的。PUT方法的响应是不可缓存的。POST方法和PUT方法请求最根本的区别是请
  8. 求URI(Request-URI)的含义不同。POST请求里的URI 指示一个能处理请求实体的资源(译注:此资源可能是一段程序,如jsp 里的servlet) 。
  9. 此资源可能是一个数据接收过程,一个网关(gateway,译注:网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就
  10. 是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI意指什么,并且服务器不能把此请求应用于
  11. 其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。一个单独的资
  12. 源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URI的PUT请求
  13. 可能会导致其资源的其它URI请求被源服务器重定义。HTTP/1.1没有定义PUT方法对源服务器的状态影响。PUT请求必须遵循8.2节中的消息传送的要求。除非特别指出,
  14. PUT方法请求里的实体头域应该被用于资源的创建或修改。

4. HEAD方法

[plain] view plain copy 
  1. 只请求页面的首部。

5. DELETE方法

[plain] view plain copy 
  1. 删除服务器上的某资源。

6. OPTIONS方法

[plain] view plain copy 
  1. 它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息。

以上6种方法中的4种可以和数据库的CRUD操作对应起来:

[plain] view plain copy 
  1. Create: PUT
  2. Read: GET
  3. Update: POST
  4. Delete: DELETE

7. TRACE方法

[plain] view plain copy 
  1. TRACE方法被用于激发一个远程的,应用层的请求消息回路(译注:TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,
  2. 这就是一个请求响应回路)。
  3. 最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体。TRACE方法允许客户端去了
  4. 解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。Via头域值有特殊的用途,因为它可以作为请求链的跟踪信息。
  5. 利用Max-Forwards头域允许客户端限制请求链的长度,这是非常有用的,因为可以利用此去测试代理链在无限循环里转发消息。如果请求是有效的,响应应
  6. 该在实体主体里包含整个请求消息,并且响应应该包含一个Content-Type头域值为”message/http”的头域。此方法的响应不能被缓存。

8. CONNECT方法

[plain] view plain copy 
  1. 把请求连接转换到透明的TCP/IP通道。

通信(1)----Http协议的方法讲解相关推荐

  1. 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议

    文章目录 RS485 通信与 Modbus 协议 单片机 RS485 通信接口.控制线.原理图及程序实例 RS485 通信与 Modbus 协议 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用 ...

  2. RS485通信和Modbus协议

    在工业控制.电力通讯.智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换.最初采用的方式是 RS232 接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错 ...

  3. 什么是物联网?常见 IoT 物联网协议最全讲解

    什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...

  4. 什么是物联网?常见IoT 物联网协议最全讲解

    推荐语:这是一本从技术原理.工程实践.设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结. 付强,某智慧社区企业的联合创始人兼CTO,资深IoT技术专家,有10余年从业经 ...

  5. 生活中常见物联网实例_什么是物联网?常见 IoT 物联网协议最全讲解

    什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...

  6. 生活中常见物联网实例_什么是物联网?常见IoT 物联网协议最全讲解

    推荐语:这是一本从技术原理.工程实践.设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结. 付强,某智慧社区企业的联合创始人兼CTO,资深IoT技术专家,有10余年从业经 ...

  7. 什么是物联网?常见IoT 物联网协议最全讲解——基础知识

    什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...

  8. RS485 通信与 Modbus 协议

    文章目录 RS485 通信与 Modbus 协议 单片机 RS485 通信接口.控制线.原理图及程序实例 RS485 通信与 Modbus 协议 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用 ...

  9. (chap2 简单的Http协议) HTTP方法(2)其他方法

    1. PUT方法 传输文件. 就像FTP协议中的请求文件上传一样,要求在请求报文的实体中包含文件内容,然后保存到请求的URI指定的位置. 鉴于HTTP1.1的PUT方法自身不带有验证机制,任何人都可以 ...

最新文章

  1. Java操作json的通用类
  2. 戴尔/Dell R420服务器在 CentOS 5.6 64bit环境下安装网卡驱动
  3. windows10 64位 Tensorflow安装--CUDA 9.1+cuDNN7.1.1+python3.6.4+tf1.6+vs2017
  4. 如何定位Release程序崩溃原因
  5. 弹层蒙版(mask),ios滚动穿透,我们项目的解决方案
  6. linux上很方便的上传下载文件工具rz和sz
  7. 从零单排HBase 02:全面认识HBase架构(建议收藏)
  8. http协议的各类状态码
  9. mysql jsp servlet 中文乱码问题。
  10. S5PV210 Uboot开发与移植02:Uboot配置与编译
  11. 回复《论WEB标准专家》。
  12. 【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)
  13. 机器人教练走进驾校_机器人教练走进中通驾校
  14. 试题16 回文数字(5位或6位)
  15. APISpace 银行卡四要素API
  16. Linux history命令
  17. keil5库文件安装失败_iPad iPhone如何清理垃圾 iPad iPhone清理垃圾文件办法【详解】...
  18. java后端获取时间
  19. RN 在Android Studio运行闪退后报错
  20. 保险入门,我不推荐买保险

热门文章

  1. Linux内核分析 - 网络[二]:网卡驱动接收报文
  2. 嵌入式Linux系统编程学习之二十七线程的创建和退出
  3. Redis与数据库缓存一致性问题
  4. C++11 中的内联函数、auto关键字、for循环及空指针
  5. linux指令 sed,Linux命令sed
  6. 关于C语言逻辑值的说法错误的是( ),2017年计算机二级c语言题库及答案
  7. 【重难点】【Java基础 05】说一说你平时遇到的异常、什么情景下会用到反射、反射的底层原理
  8. Hibernate和MyBatis的缓存机制和比较
  9. java使用httpclient封装post请求和get的请求
  10. 利用scrapy框架爬取动态加载的数据