重定向后浏览器不会从带有www的域发送cookie

尤斯

我的网站有一个暂存版本beta.example.com我最近使用以下设置添加了cookie身份验证:

response.cookie(tokenName, token, {
  httpOnly: true,
  expires: new Date(Date.now() + (tokenExpirationSec * 1000))
})

在阶段身份验证有效。

当我将代码部署到生产环境时,已成功设置cookie(通过Set-Cookie标头),但未在服务器端请求中将其发送到服务器。因此,当我刷新时,登录状态将消失,但会保留在客户端请求中。

值得注意的是,有一个从重定向example.com的301 www.example.com另外,host头是www.example.com在生产。

我最终通过domain在设置cookie时添加参数来解决了这个问题,如下所示:

response.cookie(tokenName, token, {
  httpOnly: true,
  expires: new Date(Date.now() + (tokenExpirationSec * 1000)),
  domain: '.example.com'
})

但是,我不完全了解问题的根源。根据MDN

域指定允许主机接收cookie。如果未指定,则默认为当前文档位置的主机,不包括子域。如果指定了域,则始终包含子域。

因此,当我在beta.example.com未显式设置domain情况下进行隐式操作时,隐式domainexample.com根据MDN进行处理并被beta.example.com排除在外。但是身份验证确实可以在分阶段进行!

但是我在生产中也有同样的情况,那www.example.com为什么在生产中不起作用?

这是执行重定向的nginx配置:

server {
    listen       80 default_server;

    server_name beta.example.com;

    location / {
        include proxy_pass.inc;
    }
}

server {
    listen       80 default_server;

    server_name www.example.com;

    location / {
        include proxy_pass.inc;
    }
}

server {
    listen       80;
    server_name  example.com;
    return       301 https://www.example.com$request_uri;
}
乔什·布拉德利

我相信您会误解MDN文档

如果未指定,则默认为当前文档位置的主机,不包括subdomains

如果你对含义beta.example.com,然后Domain将被设置为值beta.example.com这会将Cookie从其他子域中排除

如果要Domain在所有子域上使用cookie,则必须明确设置

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重定向后在应用浏览器中关闭

来自分类Dev

表单上的InvokeMember(“ submit”)不会重定向浏览器

来自分类Dev

表单上的InvokeMember(“ submit”)不会重定向浏览器

来自分类Dev

从带有www的域重定向到根域-工作但不完全正确

来自分类Dev

由于浏览器版本而重定向

来自分类Dev

防止从浏览器栏重定向

来自分类Dev

如何重定向www流量而不触发浏览器SSL检查?

来自分类Dev

express-session 不会持久化,也不会向浏览器发送 cookie

来自分类Dev

godaddy子文件夹域htaccess重定向,无需更改浏览器url

来自分类Dev

Spring重定向不会将浏览器URL更改为适当的URL

来自分类Dev

如果使用了CORS,Edge浏览器不会重定向呼叫

来自分类Dev

Spring重定向不会将浏览器URL更改为适当的URL

来自分类Dev

发送重定向时,强制浏览器从URL中删除#hash

来自分类Dev

使用 .htaccess 重定向到带有 www 站点的子域路由

来自分类Dev

带有OAuth浏览器重定向方法的AngularFire Infinite $ digest循环

来自分类Dev

检测和重定向支持SNI的浏览器最有效的代码是什么?

来自分类Dev

有什么方法可以使浏览器页面避免在Pyqt5中重定向?

来自分类Dev

所有浏览器都将我重定向到错误的站点

来自分类Dev

Libcurl不会在重定向上发送Cookie

来自分类Dev

立即删除带有重定向的尾随WWW到WWW

来自分类Dev

.htaccess将子域重定向到php文件,而无需在浏览器中更改URL

来自分类Dev

如果浏览器支持,则在IE中删除HSTS以测试重定向到https,并且对于子域也可以

来自分类Dev

从浏览器删除应用程序cookie后调用重定向时失败,显示cors错误

来自分类Dev

Cookie 不会在所有浏览器中过期/删除

来自分类Dev

失去春季安全性,重定向后请记住我子域Cookie

来自分类Dev

失去春季安全性,请记住我重定向后的子域Cookie

来自分类Dev

Facebook浏览器登录重定向到应用程序后,处理程序不会被调用

来自分类Dev

angular.js重定向崩溃的浏览器

来自分类Dev

基于浏览器SNI支持的重定向

Related 相关文章

  1. 1

    重定向后在应用浏览器中关闭

  2. 2

    表单上的InvokeMember(“ submit”)不会重定向浏览器

  3. 3

    表单上的InvokeMember(“ submit”)不会重定向浏览器

  4. 4

    从带有www的域重定向到根域-工作但不完全正确

  5. 5

    由于浏览器版本而重定向

  6. 6

    防止从浏览器栏重定向

  7. 7

    如何重定向www流量而不触发浏览器SSL检查?

  8. 8

    express-session 不会持久化,也不会向浏览器发送 cookie

  9. 9

    godaddy子文件夹域htaccess重定向,无需更改浏览器url

  10. 10

    Spring重定向不会将浏览器URL更改为适当的URL

  11. 11

    如果使用了CORS,Edge浏览器不会重定向呼叫

  12. 12

    Spring重定向不会将浏览器URL更改为适当的URL

  13. 13

    发送重定向时,强制浏览器从URL中删除#hash

  14. 14

    使用 .htaccess 重定向到带有 www 站点的子域路由

  15. 15

    带有OAuth浏览器重定向方法的AngularFire Infinite $ digest循环

  16. 16

    检测和重定向支持SNI的浏览器最有效的代码是什么?

  17. 17

    有什么方法可以使浏览器页面避免在Pyqt5中重定向?

  18. 18

    所有浏览器都将我重定向到错误的站点

  19. 19

    Libcurl不会在重定向上发送Cookie

  20. 20

    立即删除带有重定向的尾随WWW到WWW

  21. 21

    .htaccess将子域重定向到php文件,而无需在浏览器中更改URL

  22. 22

    如果浏览器支持,则在IE中删除HSTS以测试重定向到https,并且对于子域也可以

  23. 23

    从浏览器删除应用程序cookie后调用重定向时失败,显示cors错误

  24. 24

    Cookie 不会在所有浏览器中过期/删除

  25. 25

    失去春季安全性,重定向后请记住我子域Cookie

  26. 26

    失去春季安全性,请记住我重定向后的子域Cookie

  27. 27

    Facebook浏览器登录重定向到应用程序后,处理程序不会被调用

  28. 28

    angular.js重定向崩溃的浏览器

  29. 29

    基于浏览器SNI支持的重定向

热门标签

归档