资讯专栏INFORMATION COLUMN

Response Headers 的 Set-Cookie 前端读取不到 ?

zhangqh / 987人阅读

摘要:可选的最长有效时间,格林尼治标准时间。如果不传表示这是一个会话期。默认值为当前文档访问地址的主机名不包含子域名。设置的目录及其子目录都生效。可选设置了属性的不能使用经由属性和进行访问以防范跨站脚本攻击。

问题 描述

先看下后台返回的Set-Cookie字段:

查看浏览器Cookies:

思路

发现只有JESSIONID存入到了浏览器Storage中的Cookies。通过比较 Response Headers 中两个 set-cookie字段可以发现字段不同:

JSESSIONID:path=/

ZTEV-JWT-Token:Max-Age=1800; Expires=Wed, 26-Jun-2019 02:49:55 GMT

解决

让后台设置 ZTEV-JWT-Token 的时候也添加一个 path=/ 字段。

延伸 其他原因

我上面遇到的这个问题是因为后端没有设置path。当然还有一些其他的原因也会导致浏览器访问不到cookie,例如:设置了http-only、domain不匹配。

Set-Cookie指令 =

名称/值的形式。

cookie-name 可以是除了控制字符 (CTLs)、空格 (spaces) 或制表符 (tab)之外的任何 US-ASCII 字符。同时不能包含以下分隔字符: ( ) < > @ , ; : " / [ ] ? = { }.

cookie-name 是可选的,如果存在的话,那么需要包含在双引号里面。支持除了控制字符(CTLs)、空格(whitespace)、双引号(double quotes)、逗号(comma)、分号(semicolon)以及反斜线(backslash)之外的任意 US-ASCII 字符。关于编码:许多应用会对 cookie 值按照URL编码(URL encoding)规则进行编码,但是按照 RFC 规范,这不是必须的。不过满足规范中对于 所允许使用的字符的要求是有用的。

__Secure- 前缀 以 __Secure- 为前缀的 cookie(其中连接符是前缀的一部分),必须与 secure 属性一同设置,同时必须应用于安全页面(即使用 HTTPS 访问的页面)。

__Host- 前缀 以 __Host- 为前缀的 cookie,必须与 secure 属性一同设置,必须应用于安全页面(即使用 HTTPS 访问的页面),必须不能设置 domain 属性 (也就不会发送给子域),同时 path 属性的值必须为“/”。

Expires= | 可选

cookie 的最长有效时间,格林尼治标准时间。如果不传表示这是一个会话期 cookie

Max-Age= | 可选

cookie 的最长有效时间,单位是秒。Max-Age优先级高于Expires。

Domain= | 可选

cookie 可以送达的主机名。默认值为当前文档访问地址的主机名(不包含子域名)。如果设置了该参数,则其子域也包含在内。

Path = | 可选

cookie 可以送达的路径。设置的目录及其子目录都生效。

Secure | 可选

一个带有安全属性的 cookie 只有在请求使用SSL和HTTPS协议的时候才会被发送到服务器。

HttpOnly | 可选

设置了 HttpOnly 属性的 cookie 不能使用 JavaScript 经由 Document.cookie 属性、XMLHttpRequest 和 Request APIs 进行访问以防范跨站脚本攻击(XSS)。

SameSite=Strict 和 SameSite=Lax | 可选

允许服务器设定一则 cookie 不随着跨域请求一起发送,这样可以在一定程度上防范跨站请求伪造攻击(CSRF)。

参考

MDN Web文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105003.html

相关文章

  • 从前后端分别学习——注册/登录流程2

    摘要:昨天研究了网站的注册流程,感兴趣的可以看下从前后端分别学习注册登录流程今天接着研究注册登录流程之登录。为解决这个问题,引入,它是由一组随机数组合的哈希表,当用户登录成功,本来发放给用户,现在变成发放给用户。 昨天研究了网站的注册流程,感兴趣的可以看下:从前后端分别学习——注册/登录流程1 今天接着研究注册/登录流程之登录。 登录 首先来看一下登陆过程:showImg(https://s...

    happyhuangjinjin 评论0 收藏0
  • Cookie&Session、LocalStorage&SessionStorage

    摘要:那要是被删了呢那没办法了,只能重新登陆,意味着重新提交重新分配随机数。它是一个哈希,作用就是字面意思,本地存储,只不过这里的本地指的是浏览器。 标签可以保留回车和空格等你怎么写它就怎么展示的内容 cookie cookie可以看作是一种设置,允许浏览器在电脑本地硬盘的某一个隐蔽的地方开发一块存储空间,用来存放某些特定的内容。 如果在服务器端设置了允许使用cookie,那么,之后浏览器每...

    twohappy 评论0 收藏0
  • Nginx反向代理跨域基本配置与常见误区

    摘要:同时由于跨域了,就想利用的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一些问题,在这里总结一下基本配置,也聊一下常见的配置问题。 最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器。同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一些问题,在这里总结一下基本配置...

    lindroid 评论0 收藏0
  • Nginx反向代理跨域基本配置与常见误区

    摘要:同时由于跨域了,就想利用的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一些问题,在这里总结一下基本配置,也聊一下常见的配置问题。 最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器。同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一些问题,在这里总结一下基本配置...

    JasonZhang 评论0 收藏0
  • 本地开发环境cookie丢失?

    摘要:代理响应事件,可以在这里修改响应。再贴一遍代码修改修改此处使用了对象进行操作,遍历,替换相应的值,删除原来的再重新设置一遍即可。至此,我们可以在的中来进行配置,解决开发环境下丢失的问题。 问题 最近项目对接口进行安全改造,需要用到一个Path=/XXX/的cookie值,但是本地开发环境会出现cookie丢失的问题,因为本地开发环境目录都是http://localhost:8000/h...

    thekingisalwaysluc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<