zoukankan      html  css  js  c++  java
  • http中get,post,put,delete方法的用法以及区别

    http协议是一种在网络中进行文件传送遵循的协议。一种无状态的协议、http协议服务器端不跟浏览器端建立长久的通信连接. 建立http通信之后,服务端将文件内容传送给浏览器端接收就完成一次请求。当然一个页面,往往由多个http请求构成、图片,CSS等资源的请求~可能是一个页面进行多个http请求之后得到的结果。

     GET:  发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端.

    POST: 向服务器提交数据.

    最直观的区别:

    1).GET把参数包含在URL中,POST通过request body传递参数;

    2).GET在浏览器回退时是无害的,而POST会再次提交请求;

    3).GET产生的URL地址可以被Bookmark,而POST不可以;

    4).GET请求会被浏览器主动cache,而POST不会,除非手动设置;

    5). GET请求只能进行url编码,而POST支持多种编码方式;

    6).GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;

    7).GET请求在URL中传送的参数是有长度限制的,而POST没有限制;

    8). 对参数的数据类型,GET只接受ASCII字符,而POST没有限制;

    9).GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息;

     

    本质区别:

    首先GET和POST请求都是HTTP协议中的两种发送请求的方法,而HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议,HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

    1).虽然理论上GET和POST请求在使用上可以没有区别,但是不同的浏览器(发起http请求)和服务器(接受http请求)会限制单次传送数据了来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到.

    2).GET产生一个TCP数据包;POST产生两个TCP数据包;对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。

    GET和POST使用时注意:

    1). GET与POST都有自己的语义,不能随便混用。

    2). 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

    3). 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

  • 相关阅读:
    小菜鸟学 MQ(三)
    小菜鸟 学MQ(二)
    小菜鸟学 MQ(一)
    CXF 自定义拦截器
    WebService 入门程序(一)
    查找满足条件的颜色并替换
    jsfl 巧用获取jsfl绝对路径,导入配置文件,注意配置文件无法改变舞台宽高
    jsfl 发布保存关闭
    jsfl 改变舞台宽高
    AS3 在不规则区域内拖动
  • 原文地址:https://www.cnblogs.com/kexianting/p/8448539.html
Copyright © 2011-2022 走看看