gpt4 book ai didi

ruby-on-rails - Rails Devise SSL session 在生产环境中混淆

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:14 24 4
gpt4 key购买 nike

我已经使用 Capistrano、nginx/将我的应用程序部署到 Ubuntu VPS乘客和通配符 SSL 证书。

该应用程序在开发和我的暂存环境上运行良好Heroku。

但是,当用户登录时,在生产环境中存在两个问题使用安全页面的网站。

  1. 在最新的 Chrome 和 Firefox 上,浏览器开始强制执行 HTTPS每次请求每个请求。不管用户是否登录与否。即使我在 nginx 上禁用 SSL,浏览器仍会尝试 HTTPS 并提示它无法连接。主页提供一些不安全的动态嵌入项目并使用不安全的 CDN,所以我想将该页面作为非SSL。每当我尝试通过以下方式将页面重定向到非 SSL 时nginx 重写或 Rails 中的前过滤器会导致无限重定向循环。

  2. Safari 没有第一个问题,因为它尊重这两个问题HTTPS 和 HTTP 请求。但是,当用户登录并浏览到非 SSL 页面 他们已注销或失去 session 立即。

有没有人以前遇到过这样的问题,或者对我如何诊断/解决问题有想法?

谢谢

最佳答案

您是使用 Rails 3.1 force_ssl 来启用 SSL 还是 gem?

启用 HTTPS 时,您还启用了 HTTP Strict Transport Security标志,浏览器使用它在将请求发送到服务器之前立即转到该域上的任何 HTTPS 页面。

在 Chrome 上,在您的浏览器中输入 chrome://net-internals/#hsts 然后您可以从 HSTS 列表中删除您的域,这应该会为 Chrome 修复它。不能代表 Firefox,因为我不经常使用它。

丢失 session 的问题很可能是因为 Rails 将身份验证 cookie 设置为安全的,这意味着它们只针对 HTTPS 请求而不是 HTTP 发送。确保 Rails 中的 cookie_options 未设置 :secure => true。还要检查 Devise cookie_options 设置以确保未设置 :secure => true

关于ruby-on-rails - Rails Devise SSL session 在生产环境中混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com