GET和POST两种基本方法的使用和区别
GET和POST是HTTP请求的两种最基本的方法,使用node.js时GET和POST也是就传输数据最基本的方法了,虽然两者都是传输数据,但是这两个东西是有挺大区别的,
比如:1.GET 数据在url中
POST 数据不在url中
2.数据大小的不同
get最大不超过32k(头文件空间32k,一般get大小不超过1k),post最大可达1G。
当然,这是因为它们的用途不同。
在浏览器中:GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
主要的区别在于:
1.GET参数通过URL传递,POST放在Request body中。
2.GET在浏览器回退时是无害的,而POST会再次提交请求。
3.GET产生的URL地址可以被Bookmark,而POST不可以。
4.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
5.GET请求只能进行url编码,而POST支持多种编码方式。
6.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
7.GET请求在URL中传送的参数是有长度限制的,而POST么有。
8.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
9.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
(以上内容参考自w3schools)
给大家get和post两种数据通过实现来直观的对比
get
const http=require('http');
const urlLib=require('url');
http.createServer(function (req, res){
var obj=urlLib.parse(req.url, true);
var obj=urlLib.parse("http://www.buxiangdadaima.com/index?a=12&b=5", true);//网址自己设置
console.log(obj.pathname, obj.query);
var url=obj.pathname;
var GET=obj.query;
console.log(url, GET);
//req获取前台请求数据
res.write('aaa');
res.end();
}).listen(8081);
post
const http=require('http');
const querystring=require('querystring');
http.createServer(function (req, res){
//POST——req
var str=''; //接收数据
//data——有一段数据到达(很多次)
var i=0;
req.on('data', function (data){
console.log(`第${i++}次收到数据`); //分片
str+=data;
});
//end——数据全部到达(一次)
req.on('end', function (){
var POST=querystring.parse(str);
console.log(POST);
});
}).listen(8080);
这是post分片传输的实例
QQ截图201811.png
我用的测试页面有点简洁, 你们可以用自己以前写的好看一点的页面做测试
测试页面代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="http://localhost:8081/aaa" method="post">
用户:<input type="text" name="user"><br>
密码:<input type="password" name="pass"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
总的来说 get是从服务器上获取数据,post是向服务器传送数据。get数据就像快递的小件货,一次就可以拿到了,但是保密性不太好,别人可以直接看你的快递信息,也许你买的是除脚臭的东西,然后你有脚臭别人就知道啦,post数据就像要快递一个大衣柜,没有办法一次寄过去,只能拆分,到地的再组装,但是是私人发货,没有物品信息,别人不知道里面有什么。