我有一个网络应用,让我们http://web.example.com向http://api.example.com发出POST请求。 api服务器正在运行最新版本的Sinatra,并启用了机架保护。我收到这个错误'由Rack :: Protection :: HttpOrigin'阻止攻击。
我可以这样做:
set :protection, :except => [:http_origin]
但我觉得我只是忽略了实际问题。
我试过这样做:
use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']
但我仍然收到警告。
请求不会被拒绝,但Sinatra会清除我的会话see this post,我需要session_id。
非常感谢有关如何为HttpOrigin类指定option_whitelist的任何帮助或示例。
答案 0 :(得分:21)
将您的选项作为哈希值传递给set :protection
:
set :protection, :origin_whitelist => ['http://web.example.com']
Sinatra会在设置时将它们传递给Rack::Protection
。
我怀疑你use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']
失败的原因是你仍然启用了保护,所以你最终得到了{em>两个 HttpOrigin
个实例。你可以试试
set :protection, :except => [:http_origin]
use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']
(即你已经尝试了一起),但我认为第一个解决方案更清晰。