NodeJS -如何从服务器响应中获取cookie
NodeJS - How to get cookies from server response
我想使用nodeJS作为网站报废的工具。我已经实现了一个脚本,它可以让我登录系统并从页面中解析一些数据。
步骤定义如下:
-
打开登录页面
-
输入登录数据
-
提交登录表单
-
转到指定页面
-
从页面获取并解析值
-
保存数据到文件
退出
显然,问题是每次我的脚本必须登录,我想消除它。我想实现某种cookie管理系统,我可以将cookie保存为。txt文件,然后在下一次请求时,我可以从文件中加载cookie并将其发送到请求头中。
这种cookie管理系统不难实现,但问题是如何在nodejs中访问cookie ?我发现它的唯一方法是使用请求响应对象,你可以使用这样的东西:
request.get({headers:requestHeaders,uri: user.getLoginUrl(),followRedirect: true,jar:jar,maxRedirects: 10,},function(err, res, body) {
if(err) {
console.log('GET request failed here is error');
console.log(res);
}
//Get cookies from response
var responseCookies = res.headers['set-cookie'];
var requestCookies='';
for(var i=0; i<responseCookies.length; i++){
var oneCookie = responseCookies[i];
oneCookie = oneCookie.split(';');
requestCookies= requestCookies + oneCookie[0]+';';
}
}
);
现在可以将变量requestCookies
的内容保存到。txt文件中,下次执行脚本时再加载,这样可以避免每次执行脚本都需要登录用户的过程。
这是正确的方式,还是有一个方法返回cookie ?
: 如果您想设置您的request
对象在每个后续请求中自动重新发送接收到的cookie,请在对象创建时使用以下行:
var request = require("request");
request = request.defaults({jar: true});//Send cookies on every subsequent requests
在我的例子中,我使用了'http'库,如下所示:
http.get(url, function(response) {
variable = response.headers['set-cookie'];
})
这个函数从服务器响应中获取一个特定的cookie值(在Typescript中):
function getResponseCookieValue(res: Response, param: string) {
const setCookieHeader = res.headers.get('Set-Cookie');
const parts = setCookieHeader?.match(new RegExp(`(^|, )${param}=([^;]+); `));
const value = parts ? parts[2] : undefined;
return value;
}
我个人使用Axios。
axios.request(options).then(function (response) {
console.log(response.config.headers.Cookie)
}).catch(function (error) {
console.error(error)
});
相关文章:
- 如何从SeleniumWebdriver获取异步Javascript响应
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- Typescript angularjs$http获取响应类型(避免使用<any>)
- 通过mvc中的ajax动作链接获取关于成功的响应头
- 在JavaScriptAjax调用中从web服务中的XMLDocument获取响应.
- 获取javascript函数中另一个javascript函数的响应
- 从http获取响应管理zip
- 在ajax请求中使用jquery获取javascript响应UJS
- 无法获取SOAP请求的响应文本
- 获取 API 响应对象并替换(映射)所有键
- 如何在使用 DATATABLES 发送到模板之前获取 AJAX 响应
- 获取从 .post() 到 PHP 文件的响应,但只能在 MVC 中获取
- 获取 JSON 编码响应中的数组键
- 如何获取从 AJAX 到脚本的发送响应
- 如何从 JSON 响应获取数据
- 从 JavaScript 获取数据 从 AJAX (JSON) 响应获取数据
- 将 request.https 响应获取到变量中
- JSON HTTP响应-获取单个整数
- 从http.get()响应获取url
- 如何在页面上显示facebook的响应/获取facebook用户的数据