http、ajax请求中如何携带cookie

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);

猜你喜欢

转载自blog.csdn.net/weixin_37615202/article/details/88892441