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. 【MYSQL】MYSQLの環境構築

    ダウンロード:https://dev.mysql.com/downloads/mysql/ 手順① 手順② mysql.iniの設定について [mysql]default-character-set= ...

  2. String主要方法

    No 方法名称 类型 描述 1 (字符数组)public String(char[] value) 构造 将字符数组变为字符串(Sring类对象) 2 public String(char[] val ...

  3. cat <<EOF

    1.cat >file记录的是键盘输入,相当于从键盘创建文件,并且只能创建新文件,不能编辑已有文件.>是数据重导向,会将你输入的文本内容输出到file中. 2.cat <<EO ...

  4. 关于STM32CubeMX使用LL库设置PWM输出

    HAL和LL库 HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于fla ...

  5. 天坑!c++调用python,遭遇R6034问题

    起源: AllMyTube下载核心,是c#组件调用c++dll,在dll中初始化Python运行环境.在工作目录有msvcr90.dll文件时,程序运行会弹出如下错误: R6034. -------- ...

  6. centos 上docker 运行出现/bin/sh: . not found

    本人用的是Linux上的编译的....然后用了win上的编译命令 解决办法 : 用Linux上的编译命令.....    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 g ...

  7. jquery取每个li元素下的第三个a元素

    $('li').find('a:eq(2)');

  8. gperftools对程序进行分析

    gperftools是google出品的一个性能分析工具,相关介绍可见:https://github.com/gperftools/gperftools/wikigperftools性能分析通过抽样方 ...

  9. N2N windows下编译安装文件

    n2n安装 n2n原理编译版下载,可直接使用:windows下vpn客户端 n2n_v2_linux_x64 n2n_v2_Win32TAP网卡驱动 #linux环境编译yum install -y ...

  10. Lucene学习笔记:基础

    Lucence是Apache的一个全文检索引擎工具包.可以将采集的数据存储到索引库中,然后在根据查询条件从索引库中取出结果.索引库可以存在内存中或者存在硬盘上. 本文主要是参考了这篇博客进行学习的,原 ...