有没有人遇到过这个问题,或者对CloudFlare有足够的了解?
解决方法
请注意,虽然CloudFlare灵活的SSL选项可能会增加更多安全性,但仍然有未加密的流量通过公共互联网从CloudFlare传输到AppHarbor.这可以说除了外观和减少攻击向量的数量(如用户本地网络上的数据包嗅探)之外的其他任何东西都无法实现SSL的目的 – 即它对用户看起来可能“专业”,但它实际上仍然是不安全的.
这不太理想,特别是因为AppHarbor既支持安装自己的证书,也包括开箱即用的SSL. CloudFlare还建议在原始服务器/服务支持SSL的情况下使用“完整SSL”.所以你有几个选择:
>继续使用不安全的“灵活SSL”选项,但不应检查自定义RequireHttps过滤器中的X-Forwarded-Proto标头,而应检查CF-Visitor标头的scheme属性. this discussion还有更多细节.
>使用“完整SSL”并将CloudFlare指向您的* .apphb.com主机名.这样您就可以使用AppHarbor应用程序默认启用的免费搭载SSL.您必须覆盖CloudFlare上的Host标头才能使其正常工作和here’s a blog post on how to do that.这当然会使您的应用程序的请求显示为您的* .apphb.com域名 – 例如,如果您自动将请求重定向到一个“规范”的URL或生成绝对URL,您可能需要考虑这一点.
>上传您的证书并向AppHarbor添加自定义主机名.然后在CloudFlare上启用“完整SSL”.这样主机头将保持不变,您的应用程序将继续工作而无需任何修改.您可以在this knowledge base article中阅读有关AppHarbor提供的SSL选项的更多信息.