版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37615202/article/details/88892441
前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie的,而cors跨域请求和fetch请求默认是不携带cookie的。因此,当我们的请求需要携带cookie时,我们就要对cors跨域请求和fetch请求这两中请求方式进行特殊配置处理。对于做移动端的童鞋来说,要是能把项目运行在PC端中最好不过,对于调试过程中的BUG一目了然,所以做特殊处理后更有利于我们在PC端进行调试。
fetch请求方式:
fetch('/community/getCommunityActivityByCommunityId', {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
credentials: 'include',
body:"communityId="+this.props.location.query.communityId
})
.then((res) => { return res.json(); })
.then((data) => {
//请求成功
})
.catch((e) => {
//报错
});
我们要在请求头中添加上这个配置:credentials: 'include'
cors跨域请求方式:
$.ajax({
type: "post",
url:"/activity/queryPrizeRecord",
dataType: "json",
xhrFields: {
withCredentials: true
},
crossDomain: true,
data:{},
success:function(data){
},
error:function(e){
}
})
我们要在请求头中添加上这个配置:xhrFields: { withCredentials: true }, crossDomain: true
node如何使用呢?
var http = require('http');
function nodePostGetRequest(HOST, PORT, method, bodydata, callBackFunction, path, cookie) {
//把将要发送的body转换为json格式
var body = bodydata;
var bodyString = JSON.stringify(body);
//http 头部
var headers = {
'Content-Type': 'application/json',
'Content-Length': bodyString.length,
'Cookie': cookie
};
//用与发送的参数类型
var options = {
host: HOST, //ip
port: PORT, //port
path: path, //get方式使用的地址
method: method, //get方式或post方式
headers: headers
};
var req = http.request(options, function(res) {
res.setEncoding('utf-8');
var responseString = '';
res.on('data', function(data) {
responseString += data;
});
res.on('end', function() {
//这里接收的参数是字符串形式,需要格式化成json格式使用
var resultObject = JSON.parse(responseString);
console.log('-----resBody-----', resultObject);
callBackFunction(responseString);
});
req.on('error', function(e) {
// TODO: handle error.
console.log('-----error-------', e);
});
});
req.write(bodyString);
req.end();
}
使用案例
var datapost = {
"BODY": {
"Header": {
},
"Body": {
}
}
};
nodePostGetRequest(HOST, PORT, "POST", datapost, detalCall, '', mycookie);
或
var path = "";
nodePostGetRequest(HOST, PORT, "GET", "", dealCallback, path, mycookie);