导航:首页 > 编程语言 > nodejs操作cookies

nodejs操作cookies

发布时间:2025-04-09 17:49:06

① 求问nodejs如何实现一个网页根据不同的点击跳转到另外一个网页

可以直接使用 浏览抄器js实现,也可以通过服务器来实现。
浏览器端js, 将跳转链接后面加上你的数据如:
xxxx.com/test?a=1
xxxx.com/test?a=2
xxxx.com/test?a=3
。然后解析 /test的url, 获取方式 console.log(window.location) 就知道了

后台实现方式, 通过req 获取查询参数,类似req.params ,这取决你用的框架是什么,expres,koa还是自己的原生request, 然后通过模板引擎,ejs 也好,handbar 或者其他方式 将原html带数据编译好后 写入html到response中,返回给客户端

② NodeJS 操作cookie

本文旨在深入探讨NodeJS操作cookie的实用技巧,让开发者在实际项目中能够更灵活地运用cookie进行用户认证和状态管理。

cookie作为前端存储数据的一种手段,在浏览器中占据着重要地位,尽管LocalStorage和SessionStorage逐渐流行,但cookie仍有其独特价值。

其容量有限,仅为5KB,且以字符串形式存储,但正是这种特性使其在处理简单数据时显得得心应手。

在NodeJS中,通过http模块的createServer(fn)方法创建服务时,可以利用res.setHeader()方法来设置cookie。

设置cookie的流程简洁明了:首先,使用res.setHeader('Set-Cookie', 'key1=value1')来定义cookie的key和value,然后通过res.end()结束响应。

为了保持登录状态的持久性,通常会将登录信息相关的cookie设置为路径为'/',确保所有请求都携带登录信息。

为了让cookie无法被前端直接访问和修改,可以设置httpOnly属性,限制其只在服务端操作,进一步增强安全性。

对于需要设置过期时间的场景,可以利用expires参数来实现。例如,通过设置expires为一个包含日期的字符串,即可实现1天后的过期。

在NodeJS中获取cookie,可以通过req对象直接访问。获取到的cookie是一段格式化的字符串,可以通过简单解析将其转换为对象,方便后续操作。

掌握NodeJS操作cookie的关键在于理解其基本设置方法、路径配置、安全性设置以及过期时间的管理,这些技巧对于构建稳定、安全的后端系统至关重要。

推荐阅读相关文章,深入学习NodeJS的其他实用技能,如http请求、连接MySQL、使用免费在线API接口等。

通过不断实践和探索,将点赞、关注、收藏作为学习的起点,你会发现NodeJS操作cookie带来的便利与强大功能。

③ nodejs怎么设置cookie

通过node.js建立了一个完整的网站不是一件容易的事,这涉及读取页面模板,从数据库中抽出数据构建成新的页面返回给客户端。但光是这样还不行,我们还要设置首部,在chrome中如果CSS没有设置正确的Content-Type,会不起作用的。此处理还要考虑访问量,要设置缓存,缓存不单单是把东西从内存中读入读出就行,这样会撑爆电脑内存的,这用LRU算法(最近最少用的数据会清空出内存)。基于Cookie与数据库与URL重写,我们发展出一个session机制用于在多个action中通信。对于不同的请求交由不同的action来处理,就要发展出路由机制与MVC系统,等等。我信后写这些东西一点点写出来,揭示newland.js中遇到的种种问题与解决方案。如果什么都贪图方便,直接上框架,对我们语言学习是非常不利的。

本文正如标题所说,是操作Cookie。下面是一个完整的例子:

varhttp = require('http');http.createServer(function(req, res) {// 获得客户端的CookievarCookies = {};req.headers.cookie && req.headers.cookie.split(';').forEach(function( Cookie ) {varparts = Cookie.split('=');Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '').trim();});console.log(Cookies)// 向客户端设置一个Cookieres.writeHead(200, {'Set-Cookie': 'myCookie=test','Content-Type': 'text/plain'});res.end('Hello World ');}).listen(8000);console.log('Server running at http://127.0.0.1:8000/');

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

varhttp = require('http');http.createServer(function(req, res) {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Hello World ');}).listen(8000);console.log('Server running at http://127.0.0.1:8000/');

我们通过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]

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

varhttp = require('http');http.createServer(function(req, res) {// 获得客户端的CookievarCookies = {};req.headers.cookie && req.headers.cookie.split(';').forEach(function( Cookie ) {varparts = Cookie.split('=');Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '').trim();});console.log(Cookies)// 向客户端设置一个Cookieres.writeHead(200, {'Set-Cookie': 'SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ','Content-Type': 'text/html'});res.end('Hello World <script>console.log(document.Cookie)</script>');}).listen(8000);console.log('Server running at http://127.0.0.1:8000/');

然后多刷几次页面,我们发现我们还能在控制台看到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的主机名.主机名是指同一个域下的不同主机,例如:www.google.com和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天后过期,可以这样实现:

//获取当前时间vardate=newDate();varexpireDays=10;//将date设置为10天以后的时间date.setTime(date.getTime()+expireDays*24*3600*1000);//将userId和userName两个Cookie设置为10天后过期res.writeHead(200, {'Set-Cookie': "userId=828; userName=hulk; expire="+date.toGMTString();'Content-Type': 'text/html'});

Max-Age属性: 个人感觉这个东西比Expires更好用,本来就是用于代替Expires,由于市面上的书你抄我,我抄你,都在抄旧知识,导致Expires还在使用。Max-Age的值 可以为正数,表示此Cookie从创建到过期所能存在的时间,以秒为单位,此Cookie会存储到客户端电脑,以Cookie文件形式保存,不论关闭浏览器或关闭电脑,直到时间到才会过期。 可以为负数,表示此Cookie只是存储在浏览器内存里,只要关闭浏览器,此Cookie就会消失。maxAge默认值为-1。 还可以为0,表示从客户端电脑或浏览器内存中删除此Cookie。

Cookie面向的主要是服务器,localstorage面向的是页面端js。页面所需的业务数据可以放在localstorage里,但是认证相关的信息还是需要放在Cookie里的。

Cookie的限制

一、浏览器允许每个域名所包含的 Cookie 数:

④ nodejs怎么获取它所在机器的locale和字符编码

打印头信息就可以了,因为nodejs是基于HTTP流编程的,
在头信息中找到Accept-Language就是当地的浏览器设备支持的编码了。
这个说应该明白了吧

阅读全文

与nodejs操作cookies相关的资料

热点内容
数据库超时是什么 浏览:649
文件怎么改整列内容 浏览:764
360压缩文件发邮件空白 浏览:813
上哪里查自己大数据 浏览:907
编程语言怎么学车 浏览:189
编程该怎么学才能先找工作 浏览:524
文件刻制光盘多少钱 浏览:861
校园网的网络组成结构 浏览:862
u盘系统复制文件过大 浏览:843
局域网复制文件 浏览:574
2007cad怎么编程 浏览:325
修改bat文件名 浏览:830
cad文件丢失怎么找回备份 浏览:851
手机怎么获取无线密码 浏览:315
cad文字版教程 浏览:701
16进制读取文件 浏览:831
ps电脑新建文件建不了怎么办 浏览:60
济南招标文件图纸押金一般为多少 浏览:113
火萤视频桌面文件夹怎么删除 浏览:906
微信相册里的照片时间久了很模糊 浏览:773

友情链接