请求文档讨论了使用以下示例从文件导入cookie:
var FileCookieStore = require('tough-cookie-filestore'); // NOTE - currently the 'cookies.json' file must already exist! var j = request.jar(new FileCookieStore('cookies.json')); request = request.defaults({ jar : j }) request('http://www.google.com',function() { request('http://images.google.com') })
但是,如评论中所述,它期望cookies.json已经存在.问题是,如果我有一个带有cookie的exsting jar,我怎么能将它导出到JSON?
解决方法
我不确定你的意思是“如果我有一个带有cookie的exsting jar”,但这里是我如何使用nodejs管理持久性cookie.
为了避免FileCookieStore出错,我添加了一段代码来创建json文件(如果它不存在).该文件可以为空,只要它存在:
if(!fs.existsSync(cookiepath)){ fs.closeSync(fs.openSync(cookiepath,'w')); }
现在,如果仔细查看FileCookieStore代码,只要cookie发生变化,您就会看到它调用savetoFile方法.这意味着通过将FileCookieStore对象传递给请求模块(使用jar选项,如the request documentation所述),json文件将始终反映cookie的状态.
这是一个完整的例子:
var FileCookieStore = require('tough-cookie-filestore'); var request = require('request'); var fs = require("fs"); var cookiepath = "cookies.json"; // create the json file if it does not exist if(!fs.existsSync(cookiepath)){ fs.closeSync(fs.openSync(cookiepath,'w')); } // use the FileCookieStore with the request package var jar = request.jar(new FileCookieStore(cookiepath)); request = request.defaults({ jar : jar }); // do whatever you want request('http://www.google.com',function() { request('http://images.google.com') }); // the cookies in 'jar' corresponds to the cookies in cookies.json console.log(jar);
原文地址:https://www.jb51.cc/nodejs/241313.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。