我可以只接受来自域名的 post 请求吗?

Can I accept post request only from a domain name?

我正在我的应用程序上实施支付方式,银行网站发回一个 post 请求,其中包含有关支付的信息,例如状态、支付 ID ...

但是为了确保请求不是来自试图做坏事的人,我可以只接受来自我的银行系统的请求吗?我正在寻找一些东西来检查此 action/controller 的请求仅来自 mybank.com 并跳过其他请求。

您可以尝试检查 referer 并拒绝不匹配的请求:

if request.referer.starts_with?('https://your.bank/') # or request.env['HTTP_REFERER']
  # do stuff
else
  # render error
end

但不是:a) 推荐人不安全。每个人都可以伪造它们。 b) 您的银行很可能没有发送推荐人。

我会研究其他解决方案:只允许来自您银行 ip 范围的请求并要求银行使用秘密进行身份验证。

You can constrain the route:

post 'yourpath', to: 'controller#action', constraints: { protocol: 'https://', host: 'yourbank' }