- 浏览: 906523 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (466)
- iPhone, iOS , Objective-c (155)
- 数据库 (20)
- 设计模式 (5)
- 第三方包管理,cocoapod (2)
- 版本管理, SVN, Subversion, Git (1)
- Google, Android, Java (14)
- Wordpress (1)
- 职业素养 (3)
- 版本管理,git (3)
- 前端小技巧 (2)
- flash (1)
- javascript (5)
- Ruby (0)
- 编程语言 (1)
- 网络常识 (1)
- 找到生活好感觉 (5)
- 产品经理 (1)
- markdown (1)
- 云服务器 (1)
- iPhone (116)
- iOS (116)
- Objective-c (116)
- 学习技巧 (2)
- Google (5)
- Android (6)
- Java (21)
- python (1)
- sqlite (3)
- node.js (2)
- mongodb (2)
- 学习技巧,阅读 (2)
- 软件测试 (3)
- 架构设计 (2)
- 设计 (1)
- Spring framework (3)
- junit (1)
- Linux (2)
- 软件 (1)
- Struts2 (1)
- 版本管理 (3)
- SVN (3)
- Subversion (3)
- Git (3)
- mysql (5)
- quartz (1)
- 无关技术 (1)
- 前端 (1)
- Redis (1)
- 产品管理 (0)
- 计算机常识 (1)
- 计算机科学 (0)
- swift (1)
- 服务器 (2)
- 搜索 (1)
- Scala (1)
- J2EE (1)
- maven (1)
- 前端css (1)
- 英语 (1)
- 消息队列 (1)
- kafka (0)
- apache kafka (4)
- netbeans (1)
- IDE (2)
- 歌词 (1)
- 过滤器实现 (1)
- linux vim vi (1)
- jmeter (1)
- springcloud (1)
最新评论
-
hujingnemo:
不知道为什么打不开
CHM如何改编字体大小 -
weiboyuan:
求答案 weiboyuanios@163.com
iOS软件工程师面试题(高级) -
xueji5368:
这个现在已经广泛使用了嘛!
RoboGuice入门 -
Yao__Shun__Yu:
...
CHM如何改编字体大小 -
353144886:
非常之详细 美女求认识
sqlite数据类型 datetime处理
原文:http://www.yining.org/2010/05/04/http-get-vs-post-and-thoughts/
在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616。趁有空说说
面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现乱码(在地址栏里),数据最大长度限制等等。
说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输,用httpfox等插件,或者像WireShark 等类似工具就能观察到。
POST和GET的差别其实是很大的。语义上,GET是获取指定URL上的资源,是读操作,重要的一点是不论对某个资源GET多少次,它的状态是不会改变的,在这个意义上,我们说GET是安全的(不是被密码学或者数据保护意义上的安全)。因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来(其中还有很多细节,但不影响这里的讨论)。
而POST的语意是对指定资源“追加/添加”数据,所以是不安全的,每次提交的POST,参与的代码都会认为这个操作会修改操作对象资源的状态,于是,浏览器在你按下F5的时候会跳出确认框,缓存服务器不会缓存POST请求返回内容。
很遗憾到目前为止没有应聘者能够提到这一点。我猜测这背后的原因大概有两个,一是也许大多数人往往(我也一样)满足于只要完成任务就好,不管用哪个,表单提交了,数据处理了,内容显示或者重新定向到另外一个页面,就算完成了一个任务,从任务表里划掉,结束。而且对大部分项目(OA, CRM, MIS)的大部分情况下,用哪个似乎都可以。
同时,在被商业机构在媒体和书籍上宣传兜售的WS-*概念和使用集成开发环境提供的“方便”的代码生成工具后,“了解”到所有Web服务调用都是通过POST,更潜意识里确定了POST和GET是一样的,而且GET能做的,POST都能做,POST简直就是GET++嘛。自然,能用POST就用POST,不必在乎两者的差别了。
这又让我想起最近学到的一个概念: Radius Of Comprehension,理解的半径:
当学习概念A的时候,需要先了解概念B,而概念C又是理解B的前提。当B和C都是新的需要学习的概念时,可以说A的理解半径是2,如图:
A --> B --> C
|--1--|--2--|
在学习Web开发时,接触到GET和POST时,“理解的半径”可能包涵:
POST vs. GET
|---> Conditional GET -> ETag -> Cache
| `--> Status Code
`---> HTTP的方法 --> URL
往往因为仅仅满足于完成手上被要求的任务,或者懒于问一个为什么,我们就把自己的理解半径设置成零,那么就学不到更深入的东西,也因此仅仅知道POST和GET不同,而不再会了解不同在哪里,什么是Conditional GET和缓存header等概念。
从一个简单的面试问题谈到这,貌似小题大作了,写到哪算哪吧。
<UPDATE>
看到Fenng Buzz 了这篇文字,引起一些评论,因此在这再讨论两个概念: 安全的(Safe)和幂等的(Idempotent)。
安全的是指没有明显的对用户有影响的副作用(包括修改该资源的状态)。HTTP方法里的GET和HEAD都是安全的。
幂等的是指一个方法不论多少次操作,结果都是一样。PUT(把内容放到指定URL),DELETE(删除某个URL代表的资源),虽然都修改了资源内容,但多次操作,结果是相同的,因此和HEAD,GET一样都是幂等的。
所以根据HTTP协议,GET是安全的,也是幂等的,而POST既不是安全的,也不是幂等的。
</UPDATE>
在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616。趁有空说说
面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现乱码(在地址栏里),数据最大长度限制等等。
说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输,用httpfox等插件,或者像WireShark 等类似工具就能观察到。
POST和GET的差别其实是很大的。语义上,GET是获取指定URL上的资源,是读操作,重要的一点是不论对某个资源GET多少次,它的状态是不会改变的,在这个意义上,我们说GET是安全的(不是被密码学或者数据保护意义上的安全)。因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来(其中还有很多细节,但不影响这里的讨论)。
而POST的语意是对指定资源“追加/添加”数据,所以是不安全的,每次提交的POST,参与的代码都会认为这个操作会修改操作对象资源的状态,于是,浏览器在你按下F5的时候会跳出确认框,缓存服务器不会缓存POST请求返回内容。
很遗憾到目前为止没有应聘者能够提到这一点。我猜测这背后的原因大概有两个,一是也许大多数人往往(我也一样)满足于只要完成任务就好,不管用哪个,表单提交了,数据处理了,内容显示或者重新定向到另外一个页面,就算完成了一个任务,从任务表里划掉,结束。而且对大部分项目(OA, CRM, MIS)的大部分情况下,用哪个似乎都可以。
同时,在被商业机构在媒体和书籍上宣传兜售的WS-*概念和使用集成开发环境提供的“方便”的代码生成工具后,“了解”到所有Web服务调用都是通过POST,更潜意识里确定了POST和GET是一样的,而且GET能做的,POST都能做,POST简直就是GET++嘛。自然,能用POST就用POST,不必在乎两者的差别了。
这又让我想起最近学到的一个概念: Radius Of Comprehension,理解的半径:
当学习概念A的时候,需要先了解概念B,而概念C又是理解B的前提。当B和C都是新的需要学习的概念时,可以说A的理解半径是2,如图:
A --> B --> C
|--1--|--2--|
在学习Web开发时,接触到GET和POST时,“理解的半径”可能包涵:
POST vs. GET
|---> Conditional GET -> ETag -> Cache
| `--> Status Code
`---> HTTP的方法 --> URL
往往因为仅仅满足于完成手上被要求的任务,或者懒于问一个为什么,我们就把自己的理解半径设置成零,那么就学不到更深入的东西,也因此仅仅知道POST和GET不同,而不再会了解不同在哪里,什么是Conditional GET和缓存header等概念。
从一个简单的面试问题谈到这,貌似小题大作了,写到哪算哪吧。
<UPDATE>
看到Fenng Buzz 了这篇文字,引起一些评论,因此在这再讨论两个概念: 安全的(Safe)和幂等的(Idempotent)。
安全的是指没有明显的对用户有影响的副作用(包括修改该资源的状态)。HTTP方法里的GET和HEAD都是安全的。
幂等的是指一个方法不论多少次操作,结果都是一样。PUT(把内容放到指定URL),DELETE(删除某个URL代表的资源),虽然都修改了资源内容,但多次操作,结果是相同的,因此和HEAD,GET一样都是幂等的。
所以根据HTTP协议,GET是安全的,也是幂等的,而POST既不是安全的,也不是幂等的。
</UPDATE>
发表评论
-
UIImage变为NSData并进行压缩
2014-05-19 20:23 1938//sdk中提供了方法可以直接调用 UIImage *im ... -
update cocapods
2014-05-17 22:27 810早上更新cocoapod依赖库,发现更新到32.1版本,早先的 ... -
iOS发送短信息代码实例
2014-05-16 18:15 2690#import <MessageUI/Message ... -
DISPATCH TIMER
2014-05-14 16:12 734/* __block void (^callback) ... -
UITextField左边显示图片
2014-05-13 18:08 1175The overlay view displayed on t ... -
iOS调用系统打电话,发短信功能
2014-05-11 15:48 2089先介绍一种最简单的方法: 调用打电话功能 [[UIAppl ... -
iOS面试题
2014-05-09 16:10 10821.写一下UIButton与UITableView的层级结构 ... -
socket二进制报文
2014-05-09 15:18 1309里面有帧头 字符串UTF-8 中间用0隔开 又一个字符串 ... -
将网站添加到桌面的方法
2014-05-08 14:25 1664<link href="http://www. ... -
iPhone通讯录联系人操作大全
2014-05-07 10:29 14641.需要引入AddressBook.framework框架 2 ... -
sqlite获取最新插入的rowid
2014-05-07 09:59 1533除了 last_insert_rowid select max ... -
号码归属地查询,拨打电话
2014-05-06 15:07 854在程序内调用拨打电话的方法,[[UIApplication s ... -
iOS时间合并
2014-04-28 17:55 1102合并同一时间的课程,同一时间可能有多个课程,比如13:30-1 ... -
vCard通讯录格式说明
2014-04-28 16:47 2564原帖:http://freesoftman.iteye.com ... -
UISearchBar背景色全套解决方案
2014-04-25 09:36 7448os系统升级到7.1后,原来在7.0下显示正常的UISearc ... -
升级XCode5.1.1遇到的奇葩问题NSString,NSObjectRuntime.h报错,Foundation找不到
2014-04-24 11:19 903升级XCode5.1.1遇到的奇葩问题NSString,NSO ... -
将NSString转为NSArray
2014-04-22 16:52 6275// Your JSON data: NSString *c ... -
另外一种NSData转为NSString的方法
2014-04-22 15:40 1216If the data is not null-termina ... -
HTTP,Socket,WebSocket异同
2014-04-18 16:54 1837参考文章: http://abbshr.g ... -
push隐藏UINavigtaionBar和UITabbar
2014-04-17 15:20 1099[self.navigationController setN ...
相关推荐
"Ajax中Get和Post请求的区别" Ajax作为异步JavaScript和XML的简写,是一种创建交互式网页的技术。其中,Get和Post是两种常用的HTTP请求方法,尽管它们都是用于将数据从客户端发送到服务器端,但是它们之间存在着很...
"JavaWeb笔记08Servlet中get和post区别" Servlet是Java Web开发中最基本的组件之一,它可以处理HTTP请求并生成响应。在Servlet中,get和post是两种常用的HTTP请求方法,两者之间有着很大的区别。 GET请求 GET请求...
本文将详细阐述Get和Post的区别,以便读者更好地理解和使用这两种方式。 Get方式 Get方式是一种常用的表单提交方式,它将数据附加到URL后面,以“?”号分隔,然后将数据发送到服务器端。Get方式的主要特点是: 1...
PHP 中的get与 post 方法的区别
理解GET与POST的区别对于掌握Web开发至关重要。 ### GET与POST的基本区别 #### 1. 数据传输位置 - **GET**:参数通过URL进行传递,数据附在URL之后,以问号“?”分隔URL和传输数据,并且多个参数之间用“&”符号...
总结来说,GET和POST的主要区别在于其目的和行为:GET用于获取资源,是安全和幂等的,数据在URL中;POST用于创建或修改资源,可能改变服务器状态,数据在请求体中。在实际开发中,理解并遵循这些原则可以提高系统的...
在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到URL后面,并通过URL传输数据。这种方式适合于那些不会更改服务器状态的操作,例如...
### GET与POST方法的区别 在Web开发中,GET与POST是最常见的两种HTTP请求方式,它们在功能、安全性、数据传输等方面存在显著差异。本文将基于提供的文件内容对这两种方法进行详细解析。 #### 1. 基本概念 - **GET...
"GET与POST的区别" GET和POST是HTTP协议中两种最常用的请求方法,它们都是用来从客户端向服务器端发送请求的,但它们之间有很多不同之处。 GET方法 GET方法是从服务器上获取数据的请求方法。它的主要特点是将参数...
例如,假设我们有一个表单,包含一个文本框,名称为“Text”,那么在get方式中,提交的URL将是“getpost.asp?Text=http://leewei.blogchina.com”。而在post方式中,表单内各个字段与其内容将被放置在HTML HEADER内...
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
当我们谈论PHP中的GET和POST方法时,这是HTTP协议中两种主要的数据提交方式,它们各自有着不同的特性和用途。 **1. GET方法** GET是HTTP请求中最基本的方式,用于向服务器请求资源。当用户在浏览器地址栏输入URL或...
总的来说,理解GET、POST和REQUEST的差异,并在编程中采取适当的验证措施,是确保代码安全性和可靠性的重要步骤。在进行代码审核时,关注这些细节可以有效降低潜在的安全风险,提高应用的健壮性。
网络编程中用到的交互方式post和get的区别
### GET请求和POST请求的区别详解 #### 一、概述 HTTP协议定义了多种与服务器进行交互的方法,其中最基本的包括GET、POST、PUT和DELETE。这些方法分别对应于对网络资源的查询、更新、创建和删除操作。GET通常用于...
### GET与POST的基本区别 #### GET方法: GET方法主要用于从服务器获取信息,它将参数附加在URL之后,通过URL传递给服务器。由于URL长度限制(一般不超过2048字符),GET方法能传输的数据量相对较小,通常不超过2KB...
get和post有什么区别,主要讲述get和post的详细区别,在servlet当中两种方式有什么不同
Servlet中Get与Post区别与范例讲解 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45151569
首先,GET和POST的主要区别在于它们处理数据的方式: 1. **GET**:在URL中携带参数,所有数据都显示在URL上,因此是可缓存、可书签的。但是,由于URL长度限制,GET方法传递的数据量有限,通常不超过2KB。GET请求被...