Tom*_*mas 5 javascript cookies request node.js
我正在研究NodeJs中的一个项目,该项目要求我登录以获取在检索数据时使用的cookie.我有以下代码成功登录并返回一个格式正确的cookie:
var request = require('request');
var requestData = {
"username":"myUsername",
"password":"myPassword"
}
//request post request
request({
url: 'http://localhost/login',
method: "POST",
json: requestData}
,function(err, res) {
if(err){
console.log("it did not work: " + err)
}
console.log(res.statusCode)//logs as 201 sucess
console.log("heres the cookie: "+res.headers['set-cookie']) //returns cookie in correct format
var cookie = res.headers['set-cookie']
//requesting data
request({
url: 'http://localhost/delivery-stats',
method: "GET",
header: {
'set-cookie': cookie
}
},function(err,response){
console.log(response.headers) // one of the headers says user is not authorised
}
)
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试使用附加了cookie的GET请求时,它表示用户未经授权,这意味着cookie未正确传递,任何人都会知道如何使用请求模块执行此操作?谢谢
Tom*_*mas 13
几个小时后,我找到了一个解决方案,而不是:
//requesting data
request({
url: 'http://localhost/delivery-stats',
method: "GET",
header: {
'set-cookie': cookie
}
Run Code Online (Sandbox Code Playgroud)
它必须是:
//requesting data
request({
url: 'http://localhost/delivery-stats',
method: "GET",
header: {
'Cookie': cookie
}
Run Code Online (Sandbox Code Playgroud)
因为这是通过请求发送cookie的正确方法,但是文档记录很少,所以我花了一些时间才弄明白.希望这将有助于未来的人.
对于在 2019 年以上遇到此问题的任何人,将 cookie 添加到请求的正确方法是使用 cookie jar 属性 setCookie。request 的cookie jar 基于tough-cookie,您可以参考该包的文档以获取更多详细信息。
// Require the request
const request = require('request');
// Setup the cookie jar to carry cookies
const cj = request.jar();
// Add your cookie to the jar (URL is parsed into cookie parts)
cj.setCookie(stateCookie, 'https://yoursite.com/');
// Send your request and include the cookie jar
request(
'https://request-site.com/api/things',
{ jar: cj },
(error, response, body)=>{
// do things
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6722 次 |
| 最近记录: |