zoukankan      html  css  js  c++  java
  • GET与POST

    get和post的区别主要有以下几方面:

    常规 区别:

    1、url可见性:

    get,参数url可见;

    post,url参数不可见

    2、数据传输上:

    get,通过拼接url进行传递参数;

    post,通过body体传输参数

    3、缓存性:

    get请求是可以缓存的

    post请求不可以缓存

    4、后退页面的反应

    get请求页面后退时,不产生影响

    post请求页面后退时,会重新提交请求

    5、传输数据的大小

    get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)

    post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。

    6、安全性

    这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。POST的安全性要比GET的安全性高。这里安全的含义是真正的Security的含义。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为:(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击(CSRF,跨站请求伪造,也被称为:one click attack/session riding)。

    最大的区别:GET产生一个TCP数据包;POST产生两个TCP数据包。

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

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

    1. 如果网络环境好的话,发一次包的时间和发两次包的时间差别基本可以无视。如果网络环境差的话,两次包的TCP在验证数据包完整性上,有非常大的优点。

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

    get传参最大长度的理解误区

    1.总结
    (1)http协议并未规定get和post的长度限制
    (2)get的最大长度限制是因为浏览器和web服务器限制了URL的长度
    (3)不同的浏览器和web服务器,限制的最大长度不一样

    2.误解
    (1)首先即使get有长度限制,也是限制的整个URL的长度,而不仅仅是参数值数据长度,http协议从未规定get/post的请求长度限制是多少
    (2)所谓的请求长度限制是由浏览器和web服务器决定和设置的,各种浏览器和web服务器的设定均不一样,这依赖于各个浏览器厂家的规定或者可以根据web服务器的处理能力来设定。IE 和 Safari 浏览器 限制 2k,Opera 限制4k,Firefox 限制 8k(非常老的版本 256byte),如果超出了最大长度,大部分的服务器直接截断,也有一些服务器会报414错误。

    参考:https://blog.csdn.net/zzk220106/article/details/78595108/

    https://blog.csdn.net/m_nanle_xiaobudiu/article/details/81063997

  • 相关阅读:
    BD String
    1114
    1083
    1084
    1108
    1087
    1145
    1217
    1164
    反射
  • 原文地址:https://www.cnblogs.com/xiaxiaopi/p/14381226.html
Copyright © 2011-2022 走看看