Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从客户端访问cookie-session?

如何从客户端访问cookie-session?
EN

Stack Overflow用户
提问于 2017-10-21 00:58:46
回答 2查看 10.7K关注 0票数 6

我正在使用NodeJS构建一个应用程序单页面,并希望使用我的cookie会话(cookie-session npm)来验证用户是否已登录。从我的节点服务器端,我可以获取和设置会话cookie,但我不知道如何从客户端获取。

这就是我从服务器端设置的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
req.session.user_id = user[0]._id;

其中user[0]._id是我从mongodb获得的用户id。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-21 08:25:50

因此,让我们假设您已经配置了如下所示的cookie-session

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var cookieSession = require('cookie-session');

app.use(cookieSession({
    keys: ['secret']
}));

然后让我们在会话中存储一些数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
req.session.user_id = 123;

如果你查看浏览器的开发工具,你会看到2个cookies集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
express:sess = eyJ1c2VyX2lkIjoxMjN9
express:sess.sig = 01I_Rx2gACezZI1tdl2-NvxPq6w

cookie express:sess是base64编码的。如果我们解码它,我们就会得到{"user_id":123}。重要的是要认识到会话数据存储在cookie本身中-这不仅仅是会话的id。

另一个cookie,express:sess.sig,是签名。此签名是使用密钥(在本例中为secret)生成的,用于帮助防止篡改。任何人修改express:sess都很容易,但是除非他们也能生成相应的express:sess.sig,否则服务器就会知道它已经被更改了。

话虽如此,我还是建议您看看express-session中间件。它也使用cookie,但它只使用cookie来存储会话id。cookie中不存储任何数据,所有数据都存储在服务器上。这更类似于会话在大多数其他web框架中的工作方式,但我不能确定哪种方法最适合您的需求。

无论使用哪种方法,默认情况下都应将cookie设置为httponly。您将能够在浏览器的开发工具中验证这一点。这意味着它包含在HTTP请求中,但不能通过客户端JavaScript访问。这是一种安全措施,旨在使恶意代码更难窃取cookie。您可以使用以下命令在cookie-session中禁用此安全功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.use(cookieSession({
    httpOnly: false,
    keys: ['secret']
}));

然后,您将能够使用document.cookie访问这些cookies。

我重申这是一种安全措施,不建议将其关闭。我不可能判断这是否是您的应用程序中真正关心的问题。

从你的问题中还不清楚你是真的想从cookie中解析出这些值,还是只想检查它的存在。如果需要对其进行解析,则需要对相关的Cookie值进行base64解码,然后再对其进行JSON解码。

您可以采用多种替代方法来保持cookies的httponly。如果不知道更多关于如何处理这些信息的信息,就很难确定具体的信息。如果你使用的是Express视图(即模板渲染),那么你可以在模板中做所有的工作。如果您在SPA领域,那么您可以使用AJAX请求来收集相关信息。在紧要关头,您甚至可以使用另一个cookie为您提供所需的信息,同时保证会话cookie的安全。

票数 30
EN

Stack Overflow用户

发布于 2017-10-21 06:11:20

会话是服务器端的事情,你不能在客户端访问它,如果你指的是cookie,那么,cookie不包含任何关于会话的东西,只包含指向它的ID。如果你想从客户端的会话中获取信息,你必须创建一个请求,然后服务器将会话信息发回。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46859103

复制
相关文章
从客户端Web应用程序访问Bluemix服务
Bluemix是IBM云平台可以利用100多种服务构建和托管的应用程序,例如数据库和认知服务。这些服务提供需要凭据的API。Bluemix上托管的应用程序,作为Cloud Foundry应用程序或Docker容器,可以从环境变量访问这些凭据。本文介绍如何从客户端Web应用程序调用Bluemix服务。
老人雨何
2018/01/15
3.3K0
从客户端Web应用程序访问Bluemix服务
从客户端Web应用程序访问Bluemix服务
IBM Cloud PaaS 云平台即服务基于paas平台架构开放标准开发,提供灵活云环境,可作为服务交付到公共云或者专用或内部部署环境中,快速适应各类企业IT系统跨多个领域开发和部署应用。IBM C
古玉修
2018/01/05
3.6K0
从客户端Web应用程序访问Bluemix服务
Cookie-Session比较JWT
前后端分离很多接口会暴露在公网上,为了防止用户直接请求,或者被别有用心的人使用通常开发者会为登录后的用户签发一个token,客户端在发起请求的时候携带,后台确认请求者的身份判断是否执行
用户6256742
2022/07/06
3670
SSH 客户端如何从 linux 退出
初学 Linux 的时候如果我用 Linux 的 SSH 登录了远程主机或者 VPS, 想在不关闭终端的情况下如何退出呢? 魏艾斯博客一直都使用 exit 命令退出的,也一直都有效。 具体是什么命令,
魏艾斯博客www.vpsss.net
2018/06/01
11.4K0
如何从外网访问内网网站
在holer官网上申请专属的holer access key或者使用开源社区上公开的access key信息。
码路
2018/11/16
8.3K0
Kubernetes(三) 如何从外部访问服务
.example_responsive_1 { width: 200px; height: 50px; } @media(min-width: 290px) { .example_responsive_1 { width: 270px; height: 50px; } } @media(min-width: 370px) { .example_responsive_1 { width: 339px; height: 50px; } } @media(min-width: 500px) { .example_responsive_1 { width: 468px; height: 50px; } } @media(min-width: 720px) { .example_responsive_1 { width: 655px; height: 50px; } } @media(min-width: 800px) { .example_responsive_1 { width: 728px; height: 50px; } } (adsbygoogle = window.adsbygoogle || []).push({});
草堂笺
2019/12/20
2.8K0
获取访问客户端ip
有时需要对访问者ip进行记录,但是经过了nginx或者其他代理之后通过HttpServletRequest的getRemoteAddr方法获取到的ip不一定是真实访问者的ip,通过下面的方式可以较准确的获取访问者ip,但也不是万能的,仅作为借鉴!
johnhuster的分享
2022/03/28
3.1K0
如何从外网访问本地MariaDB数据库
本地安装了MariaDB数据库,只能在局域网内访问,怎样从公网也能访问内网MariaDB数据库?
码路
2018/11/27
4.3K0
CAT客户端如何从Apollo中读取配置?
以下就是这个示例的运行环境,如果版本号不一样,区别也应该不会很大,可以根据实际情况做相应调整。
万猫学社
2022/04/22
3.7K0
CAT客户端如何从Apollo中读取配置?
获取客户端访问真实IP
通常,当 Kubernetes 集群内的客户端连接到服务的时候,是支持服务的 Pod 可以获取到客户端的 IP 地址的,但是,当通过节点端口接收到连接时,由于对数据包执行了源网络地址转换(SNAT),因此数据包的源 IP 地址会发生变化,后端的 Pod 无法看到实际的客户端 IP,对于某些应用来说是个问题,比如,nginx 的请求日志就无法获取准确的客户端访问 IP 了,比如下面我们的应用:
我是阳明
2020/06/15
3.5K0
初学Java Web(5)——cookie-session学习
HTTP 协议 Web 浏览器与 Web 服务器之间的一问一答的交互过程必须遵守一定的规则,这样的规则就是 HTTP 协议。 HTTP 是 hypertext transfer protocol(超文本传输协议)的简写,它是 TCP/IP 协议之上的一个应用层的协议,用于定义 Web 浏览器与 Web 服务器之间交互数据的过程以及数据本身的格式。 特点:无状态,默认端口 80 HTTP 协议到底约束了什么? 约束了浏览器以何种格式向服务端发送数据 约束了服务器应该以何种格式来接收客户端发送的数据 约
我没有三颗心脏
2018/04/26
6990
初学Java Web(5)——cookie-session学习
如何从外网访问局域网Apache HTTP Server
本地安装了Apache HTTP Server,只能在局域网内访问,怎样从公网也能访问本地Apache HTTP Server?
码路
2018/11/20
3.5K0
Cookie 会话身份验证是如何工作的?
在 Web 应用程序中,Cookie-Session 是一种标准的身份验证方法。饼干,也被称为“sweet cookies”。类型为“小文本文件”,是指一些网站为了识别用户身份而存储在客户端的数据。Session的主要功能是通过服务器记录用户的状态。
艾编程
2023/01/16
1K0
『JWT』,你必须了解的认证登录方案
JWT 全称是 JSON Web Token,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到。
古时的风筝
2020/08/20
1.2K0
Docker部署mysql并提供客户端访问
在服务器使用docker镜像创建容器来部署数据库,如mysql,这种方式是超级常见的,学习时间久了,有点过程会容易遗忘,特此写下博客记录,方便以后使用。
霍格沃兹测试开发Muller老师
2022/12/16
1.9K0
Windows Kerberos客户端配置并访问CDH
本文档描述Windows Server2008 R2(windows的内核版本是6.1,与windows 7相同)下安装Kerberos Client及FireFox下HTTP访问HDFS、Yarn、Hive、HBase等Hadoop服务的Web UI(如Namenode的50070,Yarn的8088)的过程。安装文档主要分为以下几步:
Fayson
2018/03/29
7.9K2
Windows Kerberos客户端配置并访问CDH
客户端访问CDN网络异常排查流程
在处理客户CDN问题的过程中,很大一部分问题主要集中在部分客户端访问异常。如果要排查客户端访问异常,就不得不先讲解一下客户访问CDN域名经过的路径。
苏欣
2019/08/20
10.3K1
讲真,别再使用JWT了!
根据维基百科中定义,JSON WEB Token(JWT)是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。
物流IT圈
2019/07/16
2.6K0
跨域无法设置cookie的问题
我想实现的功能就是:在登录页面输值进行登录之后可以把用户的信息存入到cookie中,判断用户是否在登录状态。
帅的一麻皮
2020/07/03
6.8K0
ASP.NET AJAX(4)__客户端访问WebService服务器端释放WebService方法客户端访问WebService客户端访问PageMethod错误处理复杂数据类型使用基础客户端代理的
服务器端释放WebService方法 编写一个普通的WebService 为WebService类添加自定义的属性标记__ScriptServiceAttribute 释放WebService方法                   __访问级别为Public                   __使用WebServiceAttribute进行标记 为页面中的ScriptManager引入asmx文件 客户端访问WebService [Namespaces.]ClassName.MethodName 依次
小白哥哥
2018/03/07
4.9K0

相似问题

如何使用节点cookie-session创建cookie

320

如何从客户端脚本访问参数

20

从客户端访问cookie

12

如何从远程客户端访问实体bean?

10

如何从终端访问Parse客户端密钥?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文