Rails SSL Requirement 插件 — 在重定向到 https 之前,它不应该检查您是否处于生产模式吗?
-
01-07-2019 - |
题
它不应该检查你是否处于生产模式吗?我们在开发模式下看到重定向到 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 永久;
不隶属于 StackOverflow