Rails Protect_from_forgery &多个域上的 ActionController::InvalidAuthenticityToken 问题

发布于 2025-01-10 01:51:07 字数 484 浏览 0 评论 0原文

我有一个应用程序使用 2 个域。

我注意到我总是在一个域上收到 ActionController::InvalidAuthenticityToken ,但在另一个域上却从未收到(第二个域的流量更多 - 也许这与它有关)。

由于此应用程序在第一个域上完全无用 - 无法使用任何形式(登录/注册等)。

我发现的唯一解决方法是将其添加到 ApplicationController:

protect_from_forgery if: -> { false }

当我添加 skip_before_action :verify_authenticity_token 时,我的应用程序在生产时崩溃(但在开发时不会崩溃!)。

我想弄清楚为什么真实性令牌在一个域上工作但在另一个域上不起作用(它们共享相同的资源、数据库等)?有什么想法吗?

更新:我也使用 Cloudflare。

I have ONE app which uses 2 domains.

I noticed that I am always receiving ActionController::InvalidAuthenticityToken on one domain but never on the other (second has way more traffic - maybe this has something to do with it).

Because of this App is completely useless on first domain - it is no possible to use any form (login/register etc).

The only workaround I found is to add this to ApplicationController:

protect_from_forgery if: -> { false }

When I added skip_before_action :verify_authenticity_token my app crashed on production (but not on development!).

I would like to figure out why are authenticity tokens working on one domain but not on another (they share same resources, db, etc)? Any idea?

Update: I use Cloudflare also.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七婞 2025-01-17 01:51:07

我认为 Cloudflare 是问题的根源:SSL/TLS 加密设置为 FLEXIBLE(默认设置!),这导致与 cookie 策略发生冲突。

Heroku/Rails 返回了非安全 cookie(由于非安全请求),但由于 CloudFlare 随后对内容进行了加密 (SSL),浏览器忽略了非安全 cookie。

解决方案是在 Cloudflare 上将 SSL/TLS 加密从 FLEXIBLE 更改为 FULL

I figured that Cloudflare was the root of the issue: SSL/TLS encryption was set to FLEXIBLE (default settings!) which caused a conflict with cookie policy.

Heroku/Rails returned non-secured cookies (because of non secure request) but because CloudFlare encrypted the content afterwards (SSL), browser ignored non-secure cookies.

Solution is to change SSL/TLS encryption from FLEXIBLE to FULL on Cloudflare!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文