【发布时间】:2016-10-16 00:20:53
【问题描述】:
我正在使用 simple_captcha2 gem 进行 Rails 身份验证,并使其在开发中运行良好,但验证码图像/代码在生产中没有通过 SSL 层,因此图像不会在验证码表单中呈现。我使用此letsencrypt 教程为多个域设置了 OpenSSL,它对除simple_captcha2 之外的所有内容都有效。
这是 Firefox 的错误输出:
Loading mixed (insecure) display content "http://example.com/simple_captcha?code=f987a2c87ea145419d79a00d6a257df701e2bea8&time=1465962694" on a secure page
【问题讨论】:
-
将 http 更改为 https 应该可以正常工作。
-
如果他们使用 simple_captcha2,会在哪里改变这一点,比如 gem 本身的源代码中的某个地方?
-
我在 Github 上搜索了代码库,但没有找到该 URL 的任何匹配项。所以它似乎不是由 gem 直接生成的(尽管它可能是它的依赖项之一)。就像已经说过的那样,以某种方式将
http://anrcho.com更改为https://anrcho.com,它应该可以工作。 -
我刚刚发现它在哪里构建 URL here 但我不确定我是否应该真正编辑 gem 的源代码,或者是否有更好的路线可用。
-
看起来如果请求的协议与 https 匹配,代码应该使用 https(根据代码 here)。你是如何运行你的 Rails 应用程序的(例如 nginx 代理后面的 puma)?通常,您需要 nginx 中的指令通过代理转发协议,以便 rails 知道请求是 https。如果您可以提供更多详细信息,我(或其他人)可能会帮助您回答这个问题。
标签: ruby-on-rails ruby ssl nginx captcha