一,接收差异
- get
var http=require('http');
var url=require('url');
var util=require('util');
http.createServer(funxtion(req,res){
res.WriterHeater(200,{"Content-type":"text/javascripts",charset=UTF-8})//状态码+响应头的属性
//解析url
var params=url.parse(res.url,true).query//parse将字符串转成对象,
//req.url="/?url=123&name=321"
//true表示params是{url:"123",name:"321"},false表示params是url=123&name=321
res.write("网站名:" + params.name);
res.write("\n");
res.write("网站 URL:" + params.url);
res.end();
)}.listen(3000);//监听3000端口
}
- post
var postHTML =
'<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
'<body>' +
'<form method="post">' +
'网站名: <input name="name"><br>' +
'网站 URL: <input name="url"><br>' +
'<input type="submit">' +
'</form>' +
'</body></html>';
http.createServer(function(req,res){
var body=" ";
req.on('data',function(chunt){
body+=chunt;})
req.on('end',function(){
body=querystring.parse(body);
console.log("body:"+body)
res.writeHeader(200,{"Content-type":'text/javascript;charset=UTF-8'})
if(body.name && body.url) { // 输出提交的数据
res.write("网站名:" + body.name);
res.write("<br>");
res.write("网站 URL:" + body.url);
} else { // 输出表单
res.write(postHTML);
}
res.end();
})
}).listen(3000);
区别表现如下:
- get是从服务器上获取数据,post是向服务器传送数据。
- get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
- 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
- get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
- get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
通常情况下:
超链接和浏览器的路径使用get请求
post请求数据不在url中