构建 Bigcommerce 应用程序时,我收到无效请求:无效的 HTTP 格式,解析失败

building a Bigcommerce app, I'm getting Invalid request: Invalid HTTP format, parsing fails

我正在尝试为 Bigcommerce 在 Rails 应用程序上构建一个 Ruby。他们没有 RoR hello world 应用程序,但他们有 hello world sinatra 应用程序。我正在尝试将其设置为 运行,这样我就可以弄清楚它是如何工作的,然后再使用 Rails.

我克隆了存储库 (https://github.com/bigcommerce/hello-world-app-ruby-sinatra) 并逐字按照说明进行操作,但是我在终端中收到 Invalid request: Invalid HTTP format, parsing fails 错误,并且在 Bigcommerce 的 iFrame 中显示 "SSL protocol error" 的屏幕(使用 chrome).

我不知道如何追踪这个错误 - 这甚至可能不是我的错,也许 Bigcommerce 方面的要求已经改变,只是没有更新他们的 hello world 应用程序。为什么会出现此错误,我该如何解决?

我在 Python 工作,但 运行 遇到了同样的问题。我发现的一种解决方案可能会帮助您获得 "SSL protocol error"

如果您使用的是商店-XXXXX.mybigcommerce.com,则会导致错误,因为 SSL 证书上的名称是 yourstore.com 而不是上面的名称。

我试着切换到 mystore.com 但它所做的只是从一种错误变成了另一种错误。有一些方法可以设置你正在做什么 GET/POST 请求忽略 python 中的错误,但不确定 Ruby 是否相同。我还没有尝试该选项以查看它是否有效。

我明白了 - 我需要创建一个自签名的 SSL 证书并用它启动我的本地主机服务器。

请按照以下说明进行操作: http://www.railway.at/2013/02/12/using-ssl-in-your-local-rails-environment/

当它说 "Simply add force_ssl to any controller you want to secure with SSL" 时,您实际上只是将 force_ssl 放在自己的行中,在 class YourController < ActionController

下面

在 railway.at 指令中,它在选项中使用 localhost.keylocalhost.cert,而在 link 它引用的要点中,它生成 server.keyserver.cert 个文件。此外,--ssl-verify 已过时且不起作用。所以当我从终端启动我的服务器时,这是我使用的命令:

thin start -p 5000 --ssl --ssl-key-file ~/.ssl/server.key --ssl-cert-file ~/.ssl/server.crt

更新了更好的解决方案:

使用https://ngrok.com/

它为您提供了一个免费的 https 页面,可以重定向到您的本地主机。它是随机生成的(您可以为特定子域支付 60 美元/年),但如果您从不关闭它,即使您关闭计算机,它也会保持活动状态。这样,您可以使用 https link 作为您给 bigcommerce 的回调 url,它将加载在您的本地主机上托管的页面。