关于GET POST
先说相同点,只有了解了相同点之后才能理解为什么会发生混淆。两者都能向服务器发送数据,提交的“内容”[注1]的格式相同,都是var_1=value_1&var_2=value_2&....get 和 post 区别如字面,一个是get(获取),一个是post(发送)。get用来告诉服务器需要获取哪些内容(uri+query),向静态页面(uri)请求则直接返回文件内容给浏览器,向一个动态页面请求时可以提供查询参数(query)以获得相应内容。post用来向服务器提交内容,主要是为了提交,而不是为了请求内容,就是说post的初衷并不要求服务器返回内容[注2],只是提交内容让服务器处理(主要是存储或者处理之后再存储)。
get的长度限制在2048字节(由浏览器和服务器限制的,这是目前IE的数据,曾经是1024字节),很大程度上限制了get用来传递“存储数据”的数据的能力,所以还是老老实实用来做检索吧;post则无此限制(只是HTTP协议规范没有进行大小限制,但受限于服务器的处理能力),因此对于大的数据(一般来说需要存储的数据可能会比较大,比2048字节大)的传递有天然的优势,谁让它是 nature born post 呢
get提交的数据是放在url里,目的是灵活的向服务其提交检索请求,可以在地址栏随时修改数据以变更需要获取的内容,比如直接修改分页的编号就跳到另外一个分页了(当然也可能是 404)。post提交的数据放在http请求的正文里,目的在于提交数据并用于服务器端的存储,而不允许用户过多的更改相应数据(主要是相对于在url 修改要麻烦很多,url的修改只要点击地址栏输入字符就可以了),除非是专门跑来编辑数据的。
HTTP协议与get/post请求方式
1、HTTP
hypertext transfer protocol 超文本传输控制协议。
定义了浏览器与web服务器之间数据传输的方式与数据格式(W3C定义)。
2、数据传输的方式
(1)浏览器请求建立连接。
(2)浏览器向服务器发送请求。
(3)服务器处理请求
(4)服务器发送响应,然后立即关闭连接。
注:如果浏览器想向服务器再发送一个请求,需要重新请求建立连接。
3、数据格式
(1)请求数据包
1)请求行
请求方式(get/post) 请求资源的路径 HTTP协议版本(1.0/1.1)
2)若干消息头
浏览器与服务器之间通讯的一些约定。
比如,浏览器可以告诉服务器浏览器名称、版本等信息。
3)实体内容
如果是post方式,请求数据会存放到实体内容里面。
如果是get方式,会放到请求行中的请求资源路径之后。
(2)响应数据包
1)状态行
协议版本号状态码状态码的描述
状态码:
200 正常
300 请求的资源可在多处得到
400 错误请求
401 未授权
403 禁止访问
404 找不到资源
500 系统内部错误
…
2)若干消息头
比如服务器可以向浏览器发送cookie。
3)实体内容
服务器处理完之后的结果,一般要求浏览器显示的数据。
4、get/post请求方式
(1)get方式:
1)表单默认提交的方式
2)直接在浏览器地址栏输入地址
3)通过链接访问某个地址
(2)get方式的特点:
1)在地址栏会显示请求数据;
2)请求数据会放到请求资源路径后面;
3)get方式一般用于向服务器获取资源;
4)浏览器有可能缓存get方式访问过的数据。
(3)post方式:
设置表单method="post"。
(4)post方式的特点:
1)数据不会在地址栏显示;
2)数据会存放到实体内容里;
3)post方式一般用于向服务器提交数据;
(5)优缺点比较
get方式 |
post方式 |
提交的数据量有限制 (因为只能存放到请求行之后) |
数据量大 (因为存放在实体内容里面) |
不安全 (在浏览器地址栏能看到数据) |
相对安全 (实体内容中的数据仍没有加密,可借助工具查看) |
随机推荐
- m2014-architecture-imgserver->利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽带用户.移动宽带用户出现问题:电信用户打开www.abc.com正常,移动用户打开ww ...
- Android 权限信息
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介
目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云 ...
- java.lang.NoSuchMethodException:com.yxq.action.AdminAction.addGoods()《转载》
java.lang.NoSuchMethodException:com.yxq.action.AdminAction.addGoods() 在学习struts2的时有时会出现此异常,现将其总结如下 ...
- Linux系统下编译连接C源代码
gcc test.c -o test 一步到位的编译指令 得到 test 文件 gcc test.c 得到 test.out 文件 gcc -g -c test.c -o test 只生成目标文件(. ...
- luogu P2066 机器分配[背包dp+方案输出]
题目背景 无 题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15 ...
- chrome单步调试代码
单步调试代码 所有步骤选项均通过边栏中的可点击图标 表示,但也可以通过快捷键触发(鼠标悬停在操作图标上就可以看到快捷键).下面是简要介绍: 图标/按钮 操作 描述 Resume 继续执行直到下一个断点 ...
- 宝塔面板快速开启https服务
最近在做小程序开发,急需要一个https的域名,首先我的域名是阿里云的,服务器是腾讯云的,操作都一样: 无论阿里云还是腾讯云,配置SSL是针对服务器的,所以首先是要去申请 腾讯/阿里云服务器的SSL( ...
- PHP概率算法---砸金蛋示例
这是一个很经典的概率算法: function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); ...
- spring-boot集成redis
application.properties #redis 配置 # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redi ...