http、ajax请求中如何携带cookie

前端数据请求中,ajax和jsonp默认携带cookie,但cors和fetch不带。要使cors和fetch携带cookie,需特殊配置:fetch需设置credentials为'include',cors需设置xhrFields为{withCredentials: true}和crossDomain为true。此配置便于在PC端调试移动端项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端进行数据请求有:普通的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);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值