[是什么]

我们先来重温一下web应用模式。


get请求用RequestBoDY_数据

打电话——HTTP(超文本传输协议)


get请求用RequestBoDY_服务器_02

Http的存在是为了客户机和服务器之间的通信。客户机“请求”,服务器“应答”。读者请看上上图,“HttpRequest”的中文意思就是:Http请求。

get和post是请求的2种方法。

                                                                    [其他http的请求方法]


名称

作用

Head

与get相同,但只返回HTTP报头,不返回文档主体

put

上传指定的URI表示

delete

删除指定资源

options

返回服务器支持的http方法

connect

把请求连接转换到透明的TCP/IP通道


其中,put、 delete、post、get对应着对请求进行“增删改查”。今天我们只来说说get和post


                                          [获取/查询——get]

get方法最常用,其是从指定的资源请求数据。

其形式为:URL?传输数据;参数&参数。

传输规则为:


数据

发送形式

英文字母/数字

原样

空格

+

中文/其它字符

用Base64加密


例子如下:

login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD

                                                   [更新——post]

post是向指定的资源提交要被处理的数据,比如完成表单数据的提交,将数据提交给服务器处理。

例子如下:

POST/test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

在以下情况中,一般使用 POST请求:

(1)无法使用缓存文件(更新服务器上的文件或数据库)

(2)向服务器发送大量数据(POST没有数据量限制)

(3)发送包含未知字符的用户输入时(POST比 GET更稳定也更可靠)


                                                  [两者比较]


比较项

get

post

作用

获取数据

提交数据

是否有数量限制

传参方式(一般)

url

request body

限制长度因素

浏览器或服务器配置

服务器配置和内存大小

是否改变服务器的状态

是否幂等

提供的资源

参数

表单

是否有缓存

服务端获取请求参数用

Request.QueryString()

Request.Form()


什么叫做幂等?

同一个请求方法执行多次和仅执行一次的效果完全相同。举个栗子,你第一次说脏话,你妈打你,你第十次说脏话,你妈依旧打你,这就是“不管执行几次,其结果是一样的”。


什么叫做URL?

 

get请求用RequestBoDY_服务器_03

 用来描述信息资源的字符串。


get更安全——不会改变数据

由上表可知,因为get没有改变服务器的状态,所以不管执行多少次,其都不会改变页面呈现的数据,相反,post会。


post更安全——非明文传输

get是明文传输:通过Url方式请求,用户名和密码将明文出现在URL上,可以直接看到。

 

get的安全和post的安全有什么区别呢?

就像你想借朋友的一本书,朋友之所以会把书借给你,是因为认为你是“安全的”。

第一,你不会在书上乱写乱画——get安全;

第二,你不会拿着它时,在半路遇到抢劫的,书被歹徒抢走——post安全

                                                                                                         

                                                                                     [小结]

1.一句话总结get和post的区别:get更简单更快,更常用,post更安全。

2.记得听“得到”的时候,万维钢老师说过,大概意思是:怎么才算真正理解了这个知识?你讲的能让一个10岁儿童听懂就行。如此,我正在努力。加油