GET和POST方法是HTTP协议规定的。查了HTTP1.1的RFC,原文的专业性极强。下面是白话翻译,欢迎补充和指错。
  GET方法就是检索(以实体的形式)由请求uri所指定的资源。如果请求的uri指向数据产生的过程,应该把产生的数据应作为实体在响应中返回而不是源文本,除非源文件指向输出过程。
  如果请求消息包含if Modified-Since、if - unmodify - since、if - match、if - none - match或if - range头字段,则GET方法的语义将更改为“条件GET”。条件GET方法要求实体仅在头部的条件字段描述的情况下进行传输。条件GET方法旨在减少不必要的网络使用,它允许缓存的实体在不需要多个请求或传输客户端已经拥有的数据的情况下进行刷新。
  如果请求消息包含范围标头字段,GET方法的语义将变为“部分GET”。部分GET请求只传输实体的一部分。部分GET方法是为了减少不必要的网络使用,它允许在不传输客户端已有数据的情况下完成部分检索实体。
  当且仅当响应满足“某些”HTTP缓存需求时,对GET请求的响应是可缓存。
  安全性考虑略。
 
  POST方法用于向服务器发送请求报文。报文的body和start line被uri标识的资源是从属关系。POST被设计来实现以下功能:(1)现有资源的注释;(2)向公告栏、新闻组、邮件列表或类似的文章组发布消息;(3)向数据处理过程提供数据块,如提交表单的结果;(4)通过追加操作扩展数据库。
  POST方法执行的实际函数由服务器决定,通常依赖于请求uri。post实体从属于该uri,就像文件从属于父目录。
  响应报文:POST方法执行的操作如果不产生可由URI标识的资源,响应码可以是200 或204,是否包含实体看情况。如果服务器上存在资源,响应码应该是201,并包含一个实体,该实体描述响应状态并引用新资源,以及一个Location头。
  POST方法的响应不可缓存,除非响应包含适当的Cache-Control或Expires头字段。303响应可以用于指导用户代理检索可缓存资源       
  POST请求必须遵守某些消息传输要求。
  有关安全考虑略。
 
 
  总之,get方法的简单语义就是检索URI指定的资源。为了避免网络资源的浪费,协议允许响应使用缓存。post的简单语义就是向服务器发送数据,通常响应不可缓存。

GET和POST两种请求方法的区别(RFC翻译)的更多相关文章

  1. iOS学习——UITableViewCell两种重用方法的区别

    今天在开发过程中用到了UITableView,在对cell进行设置的时候,我发现对UITableViewCell的重用设置的方法有如下两种,刚开始我也不太清楚这两种之间有什么区别.直到我在使用方法二进 ...

  2. JS中的两种刷新方法以及区别和适用范围

    在项目中有一个人信息修改的页面,但是修改后显示的却是修改之前的内容,分析问题后发现查询语句写在了修改语句之前,有些某些需要又必须这么写,但是修改信息后先却显示之前的信息也太不科学了. 所以我就想用js ...

  3. 关于UIImage类的对象两种初始化方法的区别

    1.imageNamed: UIImage *image = [UIImage imageNamed:"]; UIImage的类方法 第一次读取图片的时候,先把这个图片放到缓存中,下次再使用 ...

  4. Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

  5. Android(java)学习笔记170:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

  6. GET和POST两种基本请求方法的区别

    文章来源:http://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一 ...

  7. GET和POST两种基本请求方法的区别(转)

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  8. 【转载】GET和POST两种基本请求方法的区别

    原文地址:http://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一 ...

  9. 转:GET和POST两种基本请求方法的区别

    原文地址:GET和POST两种基本请求方法的区别 原文如下: GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL ...

随机推荐

  1. hibernate NUMBER 精度

    通过Hibernate映射实体时会根据数据库中NUMBER类型的精度,生成相应的POJO类中相对应的主键类型.经过亲测结果如下: NUMBER(1) POJO类中生成的是Boolean publicc ...

  2. Eclipse安装TestNG插件

    TestNG按照其文档的定义是: TestNG是一个测试框架,其灵感来自JUnit和NUnit的,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG ...

  3. canel的网络策略

    资源: https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel 基于pod Egress ...

  4. Analysis Services 中的服务器属性配置

    Analysis Services 中的服务器属性配置: https://docs.microsoft.com/zh-cn/sql/analysis-services/server-propertie ...

  5. CRM--自定义stark

    一:启动 解释django的启动 完成以上两步,在app01下创建stark.py文件,就会被加载 (admin.py就是这样启动的) 二:注册 三:设计urls 四:增删改查

  6. 基于IPv6的数据包抓包分析(GNS3)

    一.实验拓扑 二.路由配置 路由R1.R2.R3.R4.R5详细配置: 1.配置R1: R1(config)#interface fastEthernet 0/1 R1(config-if)#ipv6 ...

  7. stark组件开发之组合搜索页面效果和 URL

    页面效果,只是样式.这个好解决!yield 的时候. 返回几个样式出去就好了! 并且前端写上一些样式的css {% if search_group_row_list %} <div class= ...

  8. flask debug 模式开启

    debug 模式开启 最近在写python flask 的Waf后台管理界面,想要启用调试模式,发现安装目前网上流行的两种方式均无法在我的Pycharm中打开调试模式. )直接在对象上设置 app.d ...

  9. centos7 安装 redis4.0.8

    1.安装lrzsz yum install lrzsz -y 2.利用rz命令将window中从redis官网下载好的“redis-4.0.8.tar.gz” 拷贝到centos中 redis官网 : ...

  10. SHELL脚本学习-定时检查Oracle alert日志并发送mail

    对于DBA来说,检查alert日志是日常工作.告警日志日积月累往往很大,而且每次在服务器上查看或者下载到目标主机查看都十分不方便. 为了方便,以下做出两种情况:(其他情况类推) 第一场景:每天早上上班 ...