Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 尝试从透明重定向的子域登录时,Rails 5的真实性令牌无效_Ruby On Rails_Ruby_Subdomain_Csrf - Fatal编程技术网

Ruby on rails 尝试从透明重定向的子域登录时,Rails 5的真实性令牌无效

Ruby on rails 尝试从透明重定向的子域登录时,Rails 5的真实性令牌无效,ruby-on-rails,ruby,subdomain,csrf,Ruby On Rails,Ruby,Subdomain,Csrf,我有一个Rails 5应用程序在端口12003上运行,我配置了一个子域以透明地重定向到该端口,如下所示: => 问题是,当我尝试登录或执行需要来自子域的真实性令牌的操作时,应用程序会抛出以下错误: ActionController::AccessController中的InvalidAuthenticationToken#尝试登录 当我尝试从包含以下端口的url执行操作时,应用程序不会抛出它: 这让我觉得应用程序检测到子域是伪造的企图 有没有一种方法可以在不禁用我的应用程序上的CSRF保护的情况

我有一个Rails 5应用程序在端口12003上运行,我配置了一个子域以透明地重定向到该端口,如下所示:

=>

问题是,当我尝试登录或执行需要来自子域的真实性令牌的操作时,应用程序会抛出以下错误:

ActionController::AccessController中的InvalidAuthenticationToken#尝试登录

当我尝试从包含以下端口的url执行操作时,应用程序不会抛出它:

这让我觉得应用程序检测到子域是伪造的企图


有没有一种方法可以在不禁用我的应用程序上的CSRF保护的情况下将子域列入白名单或修复此问题?

我在使用SSL的Rails 5DesiveNginx组合时遇到了类似的问题

简单地关闭CSRF保护会导致无法通过Desive登录(会话未更改,登录重定向回root,就好像什么都没有发生一样)

使用
curl
我测试了这只在HTTPS上是问题,但是在HTTP上一切都很好

在一天结束的时候,我唯一解决这个问题的方法就是

server {
  location @app {
    ...

    proxy_set_header X-Forwarded-Proto https;

    ...
  }
}

在Nginx站点配置中(
/etc/Nginx/sites available/default
)。

您是否在test.example.com上有表单发布到example.com上运行的rails应用程序?这些应用程序有单独的代码库吗?我有表单。当我试图提交登录表单以访问系统时,会出现此问题。没有不同的代码库,它实际上是相同的应用程序可访问形式。子域和普通域都有端口。应用程序的两个实例对
secret\u key\u base
具有相同的值?您的解决方案非常有效!根据你的知识,你能再详细说明一下这条线的作用吗?老实说,我没有那么多线索。我刚刚尝试了所有的方法,并详细分析了是什么使它起作用。但是它应该转发一些东西。。。可能是头,可能是HTTPS,所以事情不是HTTP,一切都是(所有重要的代理头都是)HTTPS。但我只知道这些。我鼓励在技术上更熟悉HTTP头的人解释一下。我的根文件夹中没有名为
etc
的文件夹