【问题标题】:Rails Simple Captcha not going over HTTPSRails Simple Captcha 不通过 HTTPS
【发布时间】: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


【解决方案1】:

在我的nginx.conf 中添加以下行(如here 所述)解决了request.protocol 返回错误协议的问题:

proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;

就验证码图像未加载而言,无论是安全内容还是不安全内容,都必须安装imagemagick

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2011-01-04
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多