如何在请求节点js库中传递cookie

时间:2019-07-04 11:20:03

标签: javascript node.js http

我当前正在使用一个请求,使用request

来调用HTTP请求

工作正常。我的问题是如何传递cookie?

这是我所做的代码

 export function triggerSimpleAjax(
  url,
  type = 'POST',
  req_data,
  onSuccess,
  onFailure,
  headers = {
    'Content-Type': 'application/json'
  }
) {
  const request = require("request");
  const jar = request.jar();
  const cookie = request.cookie("name=John");
  jar.add(cookie);
  let options = {
    url: url,
    method: type.toUpperCase(),
    headers: headers,
    json: req_data
  }

  // console.log('********************************** API Starts here **********************************');
  request(options, (error, response, body) => {
    if (!error && response.statusCode == 200) {
      onSuccess(response.body);
    } else {
      if (typeof onFailure === 'function') onFailure(response.body);
    }
  })
}

1 个答案:

答案 0 :(得分:1)

您可以创建一个cookie罐并将cookie添加到其中,并随请求发送。

const request = require("request");
const jar = request.jar();
const cookie = request.cookie("name=John");

//Doesn't work anymore jar.add(cookie);
jar.setCookie(....);
request({
  uri: "...",
  method: "...",
  jar: jar
}, function(error, response, body) {
  console.log(body);
});

主要编辑:

request现在使用tough-cookie,因此语法为:

jar.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))

还有一个sync对应对象:

  

.setCookieSync(cookieOrString,currentUrl,[{options}])
  setCookie的同步版本;仅适用于同步存储(例如默认的MemoryCookieStore)。