当页面使用SSL / HTTPS时,我发现AJAX调用无法在我的Rails站点上运行。我通过添加
解决了这个问题ssl_allowed :action1, :action2, :actionN
与相关的控制人员。
我预见这将是一种痛苦,并且在将来容易出现错误,因为我无疑会忘记在ssl_allowed列表中添加操作。
对于我网站中每个控制器的所有操作,有没有办法在[ssl_requirement] [1] gem中全局启用ssl_allowed
/ ssl_required
?我尝试将以下内容添加到ApplicationController,但这不起作用:
ssl_allowed :all
答案 0 :(得分:2)
我在github(link)找到了grosser的ssl_requirement fork,它启用了“ssl_allowed:all”并用该版本替换了我的gem副本。现在我在我的ApplicationController中使用“ssl_allowed:all”,而不是其他地方。正是我想要的。
答案 1 :(得分:2)
如果您不想依赖分叉插件,可以覆盖ssl_allowed?在你的控制器中:
class ApplicationController < ActionController::Base
...
private
def ssl_allowed?
true
end
end
编辑:这不按照我的想法行事。它没有为未指定ssl_required的页面禁用重定向到http,而是短路,整个重定向过程不执行任何操作。这真是太糟了。代码:
def ensure_proper_protocol
return true if ssl_allowed?
if ssl_required? && !request.ssl?
redirect_to "https://" + request.host + request.request_uri
flash.keep
return false
elsif request.ssl? && !ssl_required?
redirect_to "http://" + request.host + request.request_uri
flash.keep
return false
end
end
添加ssl_allowed?如果代码改为:
,这样的方法只是答案def ensure_proper_protocol
if ssl_required? && !request.ssl?
redirect_to "https://" + request.host + request.request_uri
flash.keep
return false
elsif request.ssl? && !ssl_required? && !ssl_allowed?
redirect_to "http://" + request.host + request.request_uri
flash.keep
return false
end
end