nodejs读写cookie(nodejs读写Word)

本文目录一览:

nodejs怎么设置cookie

var http = require(‘http’);

http.createServer(function (req, res) {

// 获得客户端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客户端设置一个Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘myCookie=test’,

‘Content-Type’: ‘text/plain’

});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

如果去掉其中几句,就是官方给出的例子,除了表明返回一个页面多简单外,一点用也没有。

var http = require(‘http’);

http.createServer(function (req, res) {

res.writeHead(200, {‘Content-Type’: ‘text/plain’});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

我们通过http.createServer的回调来处理所有请求与响应,因此什么有用的东西都在它们上面。Cookie位于req对象的headers对象上,为一个字符串,通常为了方便我们将它们转换成一个对象。

写入一个Cookie其实就是在首部设置一个键值对,上面是简单方式,它实际上可以这样:

res.writeHead(200, {

‘Set-Cookie’: [“aaa=bbb”,”ccc=ddd”,”eee=fff”],

‘Content-Type’: ‘text/plain’

});

但真正使用时,我们的Cookie并非这样简单的的格式:

Set-Cookie: =[; =]

[; expires=][; domain=]

[; path=][; secure][; HttpOnly]

console.log(‘Server running at ‘);

HttpOnly 属性: 这是微软对Cookie做的扩展。如果在Cookie中设置了”HttpOnly”属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

var http = require(‘http’);

http.createServer(function (req, res) {

// 获得客户端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客户端设置一个Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ‘,

‘Content-Type’: ‘text/html’

});

res.end(‘Hello World\nscriptconsole.log(document.Cookie)/script’);

}).listen(8000);

console.log(‘Server running at ‘);

然后多刷几次页面,我们发现我们还能在控制台看到SSID=Ap4GTEq这个属性,但在前端我们看不到它(当然在firebug中能看到)。

Secure属性: 当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。同上,在客户端我们也无法在document.Cookie找到被设置了Secure=true的Cookie键值对。Secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取Cookie后进行攻击。我们可以把Secure=true看成比HttpOnly更严格的访问控制。

path属性: 指定可访问Cookie的目录。例如:”userId=320; path=/shop”;就表示当前Cookie仅能在shop目录下使用。

domain属性: 指定可访问Cookie的主机名.主机名是指同一个域下的不同主机,例如:和gmail.google.com就是两个不同的主机名。默认情况下,一个主机中创建的Cookie在另一个主机下是不能被访问的, 但可以通过domain参数来实现对其的控制,其语法格式为:”name=value; domain=CookieDomain”;以google为例,要实现跨主机访问,可以写为: “name=value;domain=.google.com”;这样,所有google.com下的主机都可以访问该Cookie。

Expires属性:指定过期时间,格式为”name=value;; expires=GMT_String”; 其中GMT_String是以GMT格式表示的时间字符串,超过这个时间,Cookie将消失,不可访问。例如:如果要将Cookie设置为10天后过期,可以这样实现:

简单NodeJS爬虫和使用cookie进行模拟登录

       NodeJS做爬虫也是很方便的。因为nodejs有HTTP模块直接可以使用,而且还有很多简单粗暴的库可以即拿即用。

      首先,需要的库文件,

      1、superagent 是个轻量的的 http 方面的库,就像jquery的post,和get一样,很简单。

      2、cheerio 是一个服务端操作DOM的库,简直就是服务端的jquery。

     好的,我们需要抓取某个网站的题目。如下图。这个系统下,及时是游客状态也是可以查看题目的,只是答案我们看不到。会显示我没有登录。

现在我们有个需求,先抓取15页,根据URL的参数可以页数就是地址中 的P。并且要有本地cookie,获取cookie的方法,最简单的是,利用浏览器登录网站之后,在控制台直接打印document.cookie,得到之后,复制进txt文本。用fs模块读取并转换成字符串。在superagent请求时,把cookie传进去。

好了,控制台已经不输出“未登录”,说明已经登录成功了。

nodejs跨域怎么获取cookie

这个没有办法获取到的。

浏览器的同源策略,是不允许跨域读取cookie的。

而Nodejs是服务器端,如果浏览器都不允许。服务器自然就获取不到跨域cookie的信息了。

原创文章,作者:S7E5J,如若转载,请注明出处:https://www.506064.com/n/128993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
S7E5J的头像S7E5J
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相关推荐

  • word文档调节章节顺序

    Word文档中怎样从大纲视图排序段落?在Word文档中,如果需要对多个段落进行排序,可以从大纲视图中进行操作,非常方便快捷且准确。该怎么对文档进行排序呢?下面我们就来看看详细的教程…

    2025-01-13
  • Word表格排版技巧

    在日常的Word应用中,不只会涉及到文字排版,还经常会涉及到表格排版。那么,熟练掌握Word表格处理技巧,有助于提高你的排版效率哦。 今天,我整理了七个关于word排版处理技巧,都…

  • word一行没满就换行了怎么办

    word文档右边有空白换行怎么办,具体操作方法如下: 方法一: 打开WORD文档,文档的右侧显示有空白,但却换行了。 点击菜单栏上”开始-段落“右下角的扩展…

    2025-01-13
  • js的cookie类,js操作cookie

    本文目录一览: 1、js 如何读取cookie? 2、js中获取cookie的值是什么类型 3、js中如何获取Cookies的值 4、如何用js来操作cookie呢? 5、js操作…

    编程 2025-01-11
  • Jquery.cookie.js详解

    一、jQuery.cookie.js是什么 jQuery.cookie.js是一个轻量级的jQuery插件,用于简化在JavaScript代码中操作cookies的过程。cooki…

    编程 2025-01-11
  • cdnjson跨域,nodejs 跨域

    本文目录一览: 1、怎么解决跨域问题 2、如何可以跨域访问静态json文件呢? 3、JSON怎么跨域 怎么解决跨域问题 1、 通过jsonp跨域 JSONP(JSON with P…

    编程 2025-01-11
  • php转nodejs,php转nodejs代码

    本文目录一览: 1、node.js与php相比有哪些优缺点? 2、php和nodejs中的变量与数组的传值 3、php与nodejs通信问题 4、PHP和Nodejs能配合使用吗 …

    编程 2025-01-11
  • Word在线转图片详解

    一、Word在线转图片的应用场景 在日常工作中,我们经常需要将Word文档转换成图片进行分享或者发布。比如,我们需要将一份报告或者提案作为图片附加在邮件中,方便客户或者同事浏览。再…

    编程 2025-01-11
  • php导出到csv(php导出数据至word)

    本文目录一览: 1、php导出csv文件大小怎么去除限制 2、PHP导出数据到CSV 如何排版 3、如何使用PHP导出csv和excel文件 4、php 生成 csv文件 php导…

    编程 2025-01-11
  • js跨越设置cookie(springboot跨越设置)

    本文目录一览: 1、跨域请求如何携带cookie?不小心都拿了Offer 2、js控制cookie跨域 3、如何用js实现跨域获取cookie 4、php js跨域请求,并设置co…

    编程 2025-01-09

发表回复

登录后才能评论