Heroku 应用程序坚持使用 HTTPS - 为什么?

2023-12-08

我有一个有趣的小问题 - Heroku 上的一个应用程序被配置为使用Heroku SSL(测试版)但无论我做什么,它似乎都想使用 HTTPS。

浏览器错误:

I have redirect_to :protocol => 'http://', :status => :moved_permanently在一个控制器上。对此控制器的请求得到:

www.mysite.com redirected you too many times.
ERR_TOO_MANY_REDIRECTS

相关代码:

DNS设置:

ftp: www.mysite.com.herokudns.com
www: www.mysite.com.herokudns.com

Gemfile:

gem 'rack-ssl-enforcer'
gem 'rack-cors'

生产.rb:

** Not in effect**
#config.force_ssl = true

应用程序.rb:

# Note: no code inserted for rack-ssl-enforcer

config.middleware.insert_before 0, 'Rack::Cors' do
  allow do
    origins '*'
    resource '*', headers: :any, methods: [:get]
  end
end

我尝试在一个控制器上避免使用 HTTPS:

requests_controller.rb:

before_action :avoid_ssl

def avoid_ssl
  if request.ssl? && Rails.env.production?
    redirect_to :protocol => 'http://', :status => :moved_permanently
  end
end

我最近添加的代码requests_controller.rb已引发此错误。我的应用程序中的某些内容希望所有内容都是 HTTPS,但 Heroku 支持告诉我:

“Heroku SSL 没有什么特别之处,必须在应用程序内部执行重定向 - 要跳过给定控制器的‘强制 SSL’,这是一个代码更改”。

是什么可能导致所有内容都重定向到 HTTPS?非常感谢。


检查您的浏览器是否由于之前的操作而重定向HSTS 标头.

当您启用force_ssl在 Rails 上,中间件会自动附加标头:

Strict-Transport-Security

有效期为 1 年。如果您随后禁用它,您的浏览器将保留存储的信息直至过期,并且无论如何都会拒绝连接到该网站的 HTTP 版本。

您可以从浏览器中删除该设置。但是,请注意,之前访问过您网站的任何用户都将受到相同行为的影响,因为这就是 HSTS 标头的目的。

因此,为了保持与之前访问该站点的用户的兼容性,您仍然应该提供 HTTPS 版本并避免发送 HSTS 标头(或将其设置为非常短的过期时间)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku 应用程序坚持使用 HTTPS - 为什么? 的相关文章

  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • RailsAdmin 中具有 join_table 和 has_many :through 的模型的路由错误

    所以我有3个模型 category product category products 这是我的category rb attr accessible name has many category products do def with
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 使用 Android WebViewClient 启用特定 SSL 协议

    我的应用程序使用WebViewClient与服务器建立 SSL 连接 服务器配置为仅接受 TLSv1 1 及以上协议 使用 Android 时 如何检查哪些 SSL 协议是 a 支持的和 b 默认启用的WebViewClient在设备上 如
  • 捆绑包安装无法离线工作

    我得到了这个问题 我想已经安装了捆绑器 因为我无法在 RoR 中创建应用程序时捆绑安装 也无法直接在项目中捆绑安装 如果您遇到任何问题并找到解决方案 请帮助我 enter code here run bundle install Fetch
  • 为什么 Rails 应用程序在底部显示数据库信息?

    我创建了一个博客 每当我添加帖子时 帖子索引页面底部总会显示数据库中的记录列表 home html erb 像这样
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • 黄瓜与 RSpec

    我想开始深入研究 BDD 我以前从未使用过 TDD 现在 不确定我是否应该从学习 RSpec 开始 然后跳到 Cucumber 或者直接使用 Cucumber 我一直在互联网上阅读有关两者的内容 在我看来 Cucumber 可能是 RSpe
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • 从 Firefox 33.0.2 中的 javascript 清除 ssl 客户端证书状态(已删除专有 window.crypto)

    我正在寻找一种方法来清除 Firefox 中的 SSL 客户端证书缓存 作为一种 注销 功能 以便服务器在我下次连接到服务器时不再通过客户端证书识别我 解决方案来自从 JavaScript 清除 ssl 客户端证书状态 https stac
  • time_select 表单助手将新时间对象解释为 UTC,而不是配置的时区

    我遇到了对我来说似乎很简单的问题 但我无法弄清楚我做错了什么 在我的应用程序中 用户可以通过简单的 form for 添加他们的课程 他们可以输入课程讲座的开始时间和结束时间 如下所示 div class field Start Time
  • Rails content_for 和yield 之间有什么区别?

    例如 content for stuff vs yield stuff 我知道它们的实现略有不同 但是有任何真正的功能差异吗 是否有普遍接受的最佳实践 yield是您指定内容区域在布局中的位置的方式 你可能有这样的事情 div h1 Thi
  • 使用 luasocket smtp 和 ssl 发送电子邮件

    我一直在尝试使用帖子中描述的代码发送电子邮件 lua使用gmail账户发送邮件 https stackoverflow com questions 11070623 lua send mail with gmail account 代码由米

随机推荐