如果在 set-cookie 的时候不设置 path 属性,那么 path 默认值是什么?

去冲浪鸭
  • 43

背景:

  • 前端已经在请求头中设置withCredentials: true
  • 前端是单页应用,使用 hash 路由
  • 服务端的响应头已经配置了 Access-Control-Allow-Credentials:trueAccess-Control-Allow-Origin:前端域名

如果在 set-cookie 的时候不设置 path 属性,那么是不是默认 path=/ ?我以前一直觉得是这样的,但是昨天和后端联调的时候发现,如果 set-cookie 不设置 path 属性,那前端在根页面也无法取到这个cookie,浏览器在下一次请求时不会自动带上 cookie。

所以从现象来看,似乎一定要加上 path=/ 才能保证前端在该域名下能取到这个cookie,有谁知道这是为什么吗?

回复
阅读 4.5k
1 个回答
✓ 已被采纳

根据 HTTP 标准 RFC6265,没有指定 set-cookie 的 path 属性时,默认为请求 uri 的路径。

例如:请求 http://example.com/api?id=1 ,那么 path 默认是 "/api"。

参考

https://tools.ietf.org/html/r...

5.2.4. The Path Attribute

If the attribute-name case-insensitively matches the string "Path",
the user agent MUST process the cookie-av as follows.

If the attribute-value is empty or if the first character of the
attribute-value is not %x2F ("/"):

  Let cookie-path be the default-path.

Otherwise:

  Let cookie-path be the attribute-value.

Append an attribute to the cookie-attribute-list with an attribute-
name of Path and an attribute-value of cookie-path.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏