【HTTP】GET和POST的区别 
 
  HTTP定义了与服务器交互的不同方法,最基本的方法有四种:GET、POST、PUT、DELETE。
  URL全程是资源描述符,用于描述网上的资源。以上四种方式就是对资源的查、改、增、删的操作。

  【HTTP是如何规范的?】
  GET:查询/获取,不会影响资源的状态
  POST:更新资源
  PUT:增加
  DELETE:删减

  【实际中是如何使用的?】
  GET:查询/获取、修改资源
  POST:更新资源
  PUT:很少使用
  DELETE:很少使用
  GET和POST并不是一个取一个发,本质上只是发送机制不同
      查改增删的动作都可以通过GET/POST方式完成,不需要PUT和DELETE

  【实际使用与规范出现不一致的原因是什么?】

   PUT和DELETE很少使用的原因是:
      早期的Web MVC框架设计者们并没有意识到将URL当作抽象的资源来看待和设计,
      所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,
      而不支持PUT和DELETE方法。

  【GET和POST的区别是什么?】
  1. 各自所在的位置 
    (1)GET在URL中:
        GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,
        参数之间以&相连,如:
        login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD    
        如果数据是英文字母/数字,原样发送,如果是空格,转换为
        +,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:
        %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII
    
     (2)POST通过form提交,提交的数据则放置在是HTTP包的包体中,不会在URL中显式呈现

  2.  大小限制
     GET
     (1)HTTP规范中:  HTTP规范中并没有规定URL的长度限制,GET的数据在URL中,因此GET的数据量直接影响URL的长度,
                故规范并没有限制GET数据量的多少
     (2)实际中:      限制主要是浏览器和服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,
                 如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
     POST
     (1)HTTP规范中:  没有限制POST数据的大小
     (2)实际中:     限制主要是服务器处理数据的能力

  3.  安全性
      POST比GET的安全性高,表现在:
      (1)GET数据之间显示在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,
        那么别人就可以拿到你的账号和密码了
      (2)使用GET提交数据可能会造成Cross-site request forgery攻击
  
  【另外】
  FORM提交数据的方式的method是GET方式

【HTTP】GET和POST的区别的更多相关文章

  1. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

  2. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  3. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  4. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

  5. X86和X86_64和X64有什么区别?

    x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为&qu ...

  6. Java中Comparable与Comparator的区别

    相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...

  7. MySQL中interactive_timeout和wait_timeout的区别

    在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR (HY000): Lost connection to MySQL server ...

  8. 设置line-height:1.5和line-height:150%或者line-height:150px的区别

    直接正题: 看一下line-height可能的值: 其实可以分为两类: (1)不带单位的(如line-height:1.5),这种是推荐使用的: (2)带单位的(如line-heigth:30px/1 ...

  9. C#中Length和Count的区别(个人观点)

    这篇文章将会很短...短到比你的JJ还短,当然开玩笑了.网上有说过Length和count的区别,都是很含糊的,我没有发现有 文章说得比较透彻的,所以,虽然这篇文章很短,我还是希望能留在首页,听听大家 ...

  10. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

随机推荐

  1. 关于LINUX权限-bash: ./startup.sh: Permission denied

    关于LINUX权限-bash: ./startup.sh: Permission denied <script type="text/javascript"></ ...

  2. 第一次做的struts2与spring整合

    参考:http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html 这篇文章说的关键就是“除了导入Struts2和Spring的核心库之外, ...

  3. SGU 149 Computer Network 树DP/求每个节点最远端长度

    一个比较经典的题型,两次DFS求树上每个点的最远端距离. 参考这里:http://hi.baidu.com/oi_pkqs90/item/914e951c41e7d0ccbf904252 dp[i][ ...

  4. ubuntu 默认 进入 命令行

    图形模式下,首先进入终端:1. 运行 sudo vi/etc/default/grub2. 找到 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”3.改为 GRUB_ ...

  5. Python 脚本生成测试数据,Python生成随机数据,Python生成大量数据保存到文件夹中

    代码如下: import random import datetime import time dataCount = 10*100*100 #10M. codeRange = range(ord(' ...

  6. git add 之后因为没提交正确文件需要撤销

    之后因为没提交正确文件需要撤销时,采用如下方法:git log //查看提交记录MT6592_L_2SIM_GIT$ git reset --hard 717af7c9664be098939cb266 ...

  7. 多个电脑共用一个ssh

    比如我们有多个设备,但不想每个设备上生成一个ssh key,然后去github或其他网站上添加,那样的话,ssh key会比较多,搞起来会比较乱,所以我们想在不同的设备上使用同一个ssh. 做法是,我 ...

  8. CFileDialog使用总结

    http://blog.csdn.net/tianhai110/article/details/2055149 CFileDialog经常用,但经常忘,现归纳整理下,方便今后查询. 例子: CFile ...

  9. Android uiautomator gradle build system

    This will guide you through the steps to write your first uiautomator test using gradle as it build ...

  10. An AnnotationConfiguration instance is required to use

    An AnnotationConfiguration instance is required to use <mapping class="jebe7282/study/hibern ...