Ruby on Rails:使用thin start --ssl时,force_ssl未将http重定向到https

3
我一直试图配置我的Rails项目以使用SSL(应用程序范围内),使用thin(通过添加thin gem并将config.force_ssl=true放置在application.rb中)。但结果是,我有一个令人讨厌的问题。
当我使用rails s启动我的Rails服务器,并尝试访问http://localhost:3000时,它会重定向到https://localhost:3000,这是正确的。但是,它会抱怨缺少SSL证书...
另一方面,如果我使用thin start --ssl启动我的应用程序,并尝试访问http://localhost:3000,它不会重定向到https://localhost:3000,并抱怨以下错误:
“未收到数据” “由于服务器未发送任何数据,无法加载网页。”
但是,通过访问https://localhost:3000,它只显示证书警告,但在同意继续后,所有功能都可以正常使用。
所以我想问的是,在使用带有thin的SSL(开发模式)时,如何使HTTP到HTTPS重定向工作?
完美的答案将包含这样的可能性:在启用全局应用程序的SSL的同时使用rails s正常启动服务器,并且访问http重定向到https,并且所有功能都可以正常使用!
谢谢提前,我已经寻找了几个小时,但找不到答案。

你也遇到了同样的问题吗?有什么线索吗? - user1616238
你找到解决方案了吗?我正在尝试在Rails4应用程序中实现这个。 - Alok Swain
5个回答

0

你应该安装自己的OpenSSL签名证书。 你可以在这个页面上找到更多信息。


0
你的电脑作为(本地主机)可以自签名SSL证书,你的浏览器可以接受它,但我认为浏览器不会自动接受具有该层安全性的证书。也许尝试将本地主机证书添加到浏览器中?

0

请确认config/environments/development.rb文件中有以下代码:

config.force_ssl = true

参考thin with ssl support and ruby debug这篇文章以及其中Nathan和Shree的回复,获取更多关于该主题的信息:


0
使用 ngrok (https://ngrok.com/)。它是免费的,并且安装非常简单。
只需启动您的服务器,然后在另一个终端窗口中运行即可。
ngrok http 3000

ngrok会为您提供一个地址,该地址将会循环回到您的开发机器 - 类似于http://randomstringhere.ngrok.io

将其放入浏览器中,您将看到它重定向到https://randomstringhere.ngrok.io,并且仍然在端口3000上路由到您的服务器。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接