关于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方式 |
|
提交的数据量有限制 (因为只能存放到请求行之后) |
数据量大 (因为存放在实体内容里面) |
|
不安全 (在浏览器地址栏能看到数据) |
相对安全 (实体内容中的数据仍没有加密,可借助工具查看) |
随机推荐
- iPad UIPopoverController弹出窗口的位置和坐标
本文转载至:http://blog.csdn.net/chang6520/article/details/7921181 TodoViewController *contentViewControll ...
- android基础---->摄像头与相册的调用
很多应用程序都可能会使用到调用摄像头拍照和从相册选取图片的功能,今天我们开始android中摄像头与相册调用的学习. 目录导航 调用摄像头拍照 从相册中选择照片 友情链接 调用摄像头拍照 大致流程:调 ...
- web基础---->okhttp的使用
今天我们就讲一下okhttp的使用,具体的okhttp使用可以参见官方的文档. okhttp的使用 一.okhttp的下载安装 Download the latest JAR or grab via ...
- jQuery的无new构建
正常面向对象的写法: var cJquery = function(){ //构造函数体 }; cJquery.prototype = { name : function(alert("ch ...
- Chrome浏览器下CSS字体大小设置小于12px无效问题
当字体大小被设置小于12px时,IE.firefox可以起作用.但chrome中仍然显示为12px大小. 解决方法为: html, body { -webkit-text-size-adjus ...
- JZOJ.5331【NOIP2017模拟8.23】壕游戏
Description
- net 中的一些知识
这是一篇摘抄的文章 有一些内容对我很有帮助 .有一些内容解释很清晰 所以我拿过来了. 第一遍用了5天时间,第二遍看的时候决定自己复制一份出来于是有了这儿博客. 什么是.NET?什么是.NET Fram ...
- OneThink生成分类树方法(list_to_tree)使用!
具体方法: Application / Common / Common / function.php 下的 224行: function list_to_tree($list, $pk='id', $ ...
- JS事件监听的添加方法
一. 我们一般在的事件添加时是这样做的: elm.onclick = function( ) { //handler } 这样的写法兼容主流的浏览器,但是存在一个问题,当同一个elm绑定多个事件时,只 ...
- JIRA licence crack and etc
https://my.oschina.net/u/199525/blog/313788 http://blog.csdn.net/joinandjoin/article/details/9052785 ...