2012-12-29 15 views
14

Bir web uygulamasına sahip olduğumda, http://api.example.com'a POST isteğinde bulunan http://web.example.com diyelim. API sunucusu, Sinatra'nın en yeni sürümünü raf korumasına sahip olarak çalıştırıyor. Rack :: Protection :: HttpOrigin 'tarafından engellenen bu hatayı alıyorum.Sinatra'daki Kök Beyaz Listesi Seçeneklerini Raf/Koruma kullanarak nasıl belirleyebilirim

böyle bir şey yapabilirsiniz:

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

ama sadece gerçek sorunu görmezden am gibi hissediyorum.

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

ama hala uyarıyı alıyorum:

Bunu yapmaya çalıştık.

İstek reddedilmiyor, ancak Sinatra oturumumu temizler see this post ve ben session_id gerekir.

HttpOrigin sınıfı için option_whitelist öğesinin nasıl belirtileceğine dair herhangi bir yardım veya örnek büyük takdir edilecektir.

+0

Rack :: Protection,: origin_whitelist => ['http://web.example.com'] 'kullanmayı denediniz mi? [Kaynak] 'a baktığımda (https://github.com/rkh/rack-protection/blob/master/lib/rack/protection/http_origin.rb), diziyi de atlatabileceğinizi düşünüyorum (Tek bir dize olarak birkaç yol ekleyerek bir diziye zaten sarılır. – iain

+0

Bu da işe yaramıyor. Özgün örneğimi kütüphaneler arası testlerden aldım [burada] (https://github.com/rkh/rack-protection/blob/master/spec/http_origin_spec.rb) – Emjay

cevap

19

set :protection bir karma olarak seçeneklerinizi Pass: it kurarken

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

Sinatra sonra Rack::Protection onları geçecek. Eğer HttpOrigin ait iki örnekleri ile bitirmek böylece use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com'], hala koruması etkin olmasıdır varken

Ben başarısız olduğunun nedenini şüpheli. Sen

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

(yani her iki çizgiler birbirinedenedim) genel deneyebilirsiniz ama önce çözüm temizleyici olduğunu düşünüyorum.

+0

Harika, teşekkür ederim, aradığım şey buydu için! – Emjay

İlgili konular