ruby-on-rails - Rails Shopify 应用程序中的 InvalidAuthenticityToken
问题描述
我有一个使用 shopify_app gem 的 Shopify 应用程序。我试图将表单发布到管理页面,但不断收到 InvalidAuthenticityToken。我正在使用 Rails 5.1.6 并设置了 config.action_controller.per_form_csrf_tokens = false 来帮助识别问题。我已经确认元 csrf-token、authenticity_token 表单字段和authentity_token 被发布到服务器所有相同的值。
<meta name="csrf-token" content="FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==">
<input type="hidden" name="authenticity_token" value="FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==">
Parameters: {"utf8"=>"✓", "authenticity_token"=>"FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==", "access_key"=>{"name"=>"A Test", "account"=>""}, "commit"=>"Save", "id"=>"2"}
控制器继承了 ShopifyApp::AuthenticatedController 并且我已经删除了所有 before_actions。
有没有办法记录预期的authenticity_token 值应该是什么?
如果有人可以提供一些指导,将不胜感激。
谢谢你。
解决方案
我的实例遇到了类似的问题。检查以确保您的 request.base_url 是预期的。
在我的情况下,我不得不强制 SSL(在 config/environments/{development,production,test}.rb 中)并将 X-Forwarded-Proto 从我的代理传递到 Rails 实例,因为 http/https 之间存在冲突request.base_url,结果抛出了一个 CSRF 错误。
在环境配置中强制使用 SSL:
config.force_ssl = true
服务器块中的 nginx proxy_set_header:
proxy_set_header X-Forwarded-Proto $scheme
——戴夫。
推荐阅读
- django - 如何在已部署的 Django 站点中使用错误警报系统
- sas - SAS-如何计算某月前10年的观察次数
- loopback4 - 使用 2 个数据源时,如何使用附加到所选数据源的存储库注入拦截器?
- docker - 无法从 Fargate 任务中检索容器内的 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
- python - 在 Windows 命令行中进行漂亮的打印
- flutter - RangeError : RangeError(index) : 无效值 : 仅有效为 0: 3
- ruby - 构建一个倒置的日期数组
- java - 在测试中对控制器的服务调用未正确更新字段
- firebase - Firebase 函数路由到特定的 http 方法
- gradle - Intellij Idea 无法与 Gradle 同步:JvmOptions 错误