You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails应用Heroku域名正常,自定义域名提交表单报错

问题解决指南

一、自定义域名表单提交错误(Cloudflare场景)

这个错误是Rails的CSRF验证失败导致的,根源是Cloudflare的HTTPS配置与Rails请求头不匹配:

  • 检查Cloudflare的SSL/TLS模式:确保设置为严格SSL或灵活SSL,同时确认Heroku端HTTPS正常(Heroku默认支持HTTPS)。
  • 让Rails信任Cloudflare反向代理:在config/application.rb中添加以下代码,确保Rails识别Cloudflare转发的真实请求协议:
    config.action_dispatch.trusted_proxies = %w(173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22)
    
    上述是Cloudflare的IP段,添加后Rails会信任代理发来的X-Forwarded-Proto头,保证CSRF token的生成与验证使用正确的HTTPS协议。
  • 清空Cloudflare缓存:旧页面缓存可能导致CSRF token不匹配,直接在Cloudflare控制面板清空缓存即可。

二、本地数据库创建失败

报错原因是Rails无法读取正确的数据库配置文件:

  • Rails默认读取config/database.yml,但你的配置文件是database.yml.tmp,先重命名文件:
    mv config/database.yml.tmp config/database.yml
    
  • 检查database.yml的development环境配置,确保PostgreSQL的用户名、密码、数据库名与本地PostgreSQL服务设置一致,示例配置:
    development:
      adapter: postgresql
      database: myapp_development
      username: your_postgres_username
      password: your_postgres_password
      host: localhost
      port: 5432
    
  • 确认本地PostgreSQL服务已启动:
    # macOS(Homebrew安装)
    brew services list postgresql
    # Ubuntu/Debian
    sudo systemctl status postgresql
    

内容的提问来源于stack exchange,提问作者SEVENELEVEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:21:36