为什么 ngrok 给我一个 403 Forbidden
Why ngrok send me a 403 Forbidden
我尝试使用 webhook 来获取 JSON,
我读到我应该安装 ngrok 因为 webhooks 在本地不起作用,所以我安装了 ngrok,
并尝试遵循这个小教程:https://medium.com/@derek_dyer/rails-webhooks-local-development-7b7c755d85e3
我创建了我的路线:
get 'invoice/webhooks'
post 'invoice/webhooks' =>'invoice#webhooks'
我的控制器:
def webhooks
render json: response.body, status: 200
end
我还在我的服务中插入了 URL : https://ce0d99f7.ngrok.io/invoice/webhooks 以接收 webhook
我 运行 ./ngrok http 3000 在我的终端,我收到一条消息
POST /invoice/webhooks 403 Forbidden
有人知道如何解决这个问题吗?
如果您使用 rails 6 并在开发中使用 ngrok,您必须编辑 config/environments 中的 development.rb 文件以添加 config.hosts << "a0000000.ngrok.io"
,其中 a0000000.ngrok.io 是url 由 ngrok 提供,没有 https://
,如果这不起作用,那么您必须在控制器中添加 skip_before_action :verify_authenticity_token
。
@daniel0318 的回答完全正确。我只想提一下,您可以使用 允许所有流量通过 ngrok(添加到 development.rb
):
# /config/environments/development.rb
config.hosts << /[a-z0-9-]+\.ngrok\.io/
重新启动你的服务器,它就会工作。
最后一点:如果你认为你已经有了这个正则表达式,请仔细看,因为 ngrok URL 格式在过去几个月里发生了一些变化, 现在包含 -
个字符。 Tl;dr,config.hosts << /[a-z0-9-]+\.ngrok\.io/
有效,但旧的正则表达式:config.hosts << /[a-z0-9]+\.ngrok\.io/
(相同但不允许破折号)无效!
我尝试使用 webhook 来获取 JSON, 我读到我应该安装 ngrok 因为 webhooks 在本地不起作用,所以我安装了 ngrok, 并尝试遵循这个小教程:https://medium.com/@derek_dyer/rails-webhooks-local-development-7b7c755d85e3
我创建了我的路线:
get 'invoice/webhooks'
post 'invoice/webhooks' =>'invoice#webhooks'
我的控制器:
def webhooks
render json: response.body, status: 200
end
我还在我的服务中插入了 URL : https://ce0d99f7.ngrok.io/invoice/webhooks 以接收 webhook
我 运行 ./ngrok http 3000 在我的终端,我收到一条消息
POST /invoice/webhooks 403 Forbidden
有人知道如何解决这个问题吗?
如果您使用 rails 6 并在开发中使用 ngrok,您必须编辑 config/environments 中的 development.rb 文件以添加 config.hosts << "a0000000.ngrok.io"
,其中 a0000000.ngrok.io 是url 由 ngrok 提供,没有 https://
,如果这不起作用,那么您必须在控制器中添加 skip_before_action :verify_authenticity_token
。
@daniel0318 的回答完全正确。我只想提一下,您可以使用 development.rb
):
# /config/environments/development.rb
config.hosts << /[a-z0-9-]+\.ngrok\.io/
重新启动你的服务器,它就会工作。
最后一点:如果你认为你已经有了这个正则表达式,请仔细看,因为 ngrok URL 格式在过去几个月里发生了一些变化, 现在包含 -
个字符。 Tl;dr,config.hosts << /[a-z0-9-]+\.ngrok\.io/
有效,但旧的正则表达式:config.hosts << /[a-z0-9]+\.ngrok\.io/
(相同但不允许破折号)无效!