Rails SSL Requirement 插件 — 在重定向到 https 之前,它不应该检查您是否处于生产模式吗?

StackOverflow https://stackoverflow.com/questions/97468

  •  01-07-2019
  •  | 
  •  

看一下 ssl_requirement 插件。

它不应该检查你是否处于生产模式吗?我们在开发模式下看到重定向到 https,这看起来很奇怪。或者这是插件的正常行为?我认为它过去的表现有所不同。

有帮助吗?

解决方案

我猜他们认为您应该在开发模式下使用 HTTPS(也许带有自签名证书)。如果这不是所需的行为,则没有什么可以阻止您自己在开发环境中使用特殊的 SSL 行为:

class YourController < ApplicationController
  ssl_required :update unless Rails.env.development?
end

其他提示

  def ssl_required?
    return false if local_request? || RAILS_ENV == 'test' || RAILS_ENV == 'development'
    super
  end

理想情况下,您应该测试您的应用程序在敏感阶段是否重定向到 https。

在开发环境中要求 SSL 没有多大意义。

您可以删除插件 ssl_必需吗? 使用 Rails 内置模拟工具的方法。

在应用程序根目录下创建文件 test/mocks/development/application.rb

require 'controllers/application_controller'

class ApplicationController < ActionController::Base
  def ssl_required?
    false
  end
end

这样,开发环境中就不再需要 SSL。

实际上,通过 https 重定向是网络服务器的责任。恕我直言,在 Rails 中为每个请求添加额外的请求哈希验证是一项开销。我写了nginx 配置, ,其中包括以下重写:

重写 ^(.*) https://$host$1 永久;

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top