我遵循了这篇由三部分组成的教程,并在托管数字海洋应用程序中成功部署了Rails应用程序。
在本地,我可以使用httpie获取资源,并使用POST创建新用户,例如:
http :8080/signup name=test email=test@email.com password=foobar password_confirmation=foobar
但是,一旦部署在数字海洋上,在这个url上使用有效的TCP健康检查,我就尝试创建一个用户(使用http://poster(:
http mtserver-igkkx.ondigitalocean.app:8080/signup name=test email=test@email.com password=foobar password_confirmation=foobar
最终得到:
HTTP/1.1 301 Moved Permanently
CF-RAY: 6d851c0f7951408d-CDG
Cache-Control: max-age=3600
Connection: keep-alive
Date: Fri, 04 Feb 2022 16:00:02 GMT
Expires: Fri, 04 Feb 2022 17:00:02 GMT
Location: https://mtserver-igkkx.ondigitalocean.app/signup
Server: cloudflare
Transfer-Encoding: chunked
Vary: Accept-Encoding
假设我需要在URL前面加https,我会用重试
http https://mtserver-igkkx.ondigitalocean.app:8080/signup name=test email=test@email.com password=foobar password_confirmation=foobar
最终得到:
http: error: SSLError: HTTPSConnectionPool(host='mtserver-igkkx.ondigitalocean.app', port=8080): Max retries exceeded with url: /signup (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)'))) while doing a POST request to URL: https://mtserver-igkkx.ondigitalocean.app:8080/signup
如果我尝试与邮递员一起发帖:
POST > mtserver-igkkx.ondigitalocean.app:8080/signup?name=test&email=test@mail.com&password=foobar&password_confirmation=foobar
它返回:
{
"status": 404,
"error": "Not Found"
}
当访问"/"上的服务器URL时,它返回404,但我认为这是正常的,因为它只应在API模式下工作,并且当前没有路由处理/。
我期待着了解如何在生产中处理数字海洋,以便能够通过http请求在这个API上创建用户。
根据记录,ssl是问题所在。
您需要通过数字海洋完成添加SSL证书的过程,以便在查询带前缀的url时使用https(以及您的web应用程序(。
这篇没有回复的SO帖子帮助我找到了一个好的过程。