16

http://api.example.comに POST リクエストを行うhttp://web.example.comとしましょう。API サーバーは、ラック保護を有効にした Sinatra の最新バージョンを実行しています。「Rack::Protection::HttpOrigin によって攻撃が防止されました」というエラーが表示されます。

私はこのようなことができます:

set :protection, :except => [:http_origin]

しかし、実際の問題を無視しているように感じます。

私はこれをやろうとしました:

use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']

それでも警告が表示されます。

リクエストは拒否されませんが、Sinatra は私のセッションをクリアします。この投稿を参照してください。session_id が必要です。

HttpOrigin クラスの option_whitelist を指定する方法に関するヘルプまたは例は大歓迎です。

4

1 に答える 1

21

オプションをハッシュとして に渡しますset :protection

set :protection, :origin_whitelist => ['http://web.example.com']

Rack::ProtectionSinatra は、セットアップ時にそれらを に渡します。

持っているときに失敗する理由はuse Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']、保護がまだ有効になっているためであると思わますHttpOrigin。あなたは試すことができます

set :protection, :except => [:http_origin]
use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']

(つまり、一緒に試した両方の行があります)が、最初の解決策の方がきれいだと思います。

于 2012-12-29T21:58:50.190 に答える