pub struct CorsManager { /* private fields */ }Expand description
per-bucket CORS configuration を一元管理する manager。
すべての書き込み (put / delete) は RwLock write 経由で atomic、
すべての読み出し (get / match_preflight) は read 経由で CorsConfig
の clone (or 派生 CorsRule の clone) を返す。
Implementations§
Source§impl CorsManager
impl CorsManager
Sourcepub fn put(&self, bucket: &str, config: CorsConfig)
pub fn put(&self, bucket: &str, config: CorsConfig)
put_bucket_cors handler から呼ぶ。bucket の既存 configuration は
完全に置き換える (S3 spec: PutBucketCors は upsert ではなく replace)。
Sourcepub fn get(&self, bucket: &str) -> Option<CorsConfig>
pub fn get(&self, bucket: &str) -> Option<CorsConfig>
get_bucket_cors handler から呼ぶ。configuration が無ければ None
(handler 側で NoSuchCORSConfiguration 404 を返す材料)。
Sourcepub fn to_json(&self) -> Result<String, Error>
pub fn to_json(&self) -> Result<String, Error>
snapshot を JSON 文字列にして返す。--cors-state-file 経路で
起動時 dump-load を将来 wire するための hook。
Sourcepub fn from_json(s: &str) -> Result<Self, Error>
pub fn from_json(s: &str) -> Result<Self, Error>
snapshot JSON から restore。起動時に --cors-state-file を読み込む
経路で使える。
Sourcepub fn match_preflight(
&self,
bucket: &str,
origin: &str,
method: &str,
request_headers: &[String],
) -> Option<CorsRule>
pub fn match_preflight( &self, bucket: &str, origin: &str, method: &str, request_headers: &[String], ) -> Option<CorsRule>
CORS preflight (OPTIONS) request を bucket の rule list に対して評価
する。S3 仕様通り、宣言順で 最初にマッチした rule を返す。マッチ
しない / bucket に config が無い場合は None。
rule マッチ条件 (AND):
originがrule.allowed_originsのどれか 1 つにmatches_globでマッチmethod(uppercase) がrule.allowed_methodsの exact-match 1 つに含まれるrequest_headersの 全要素 がrule.allowed_headersのいずれかにmatches_glob(case-insensitive) でマッチ
Trait Implementations§
Source§impl Debug for CorsManager
impl Debug for CorsManager
Source§impl Default for CorsManager
impl Default for CorsManager
Source§fn default() -> CorsManager
fn default() -> CorsManager
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for CorsManager
impl RefUnwindSafe for CorsManager
impl Send for CorsManager
impl Sync for CorsManager
impl Unpin for CorsManager
impl UnsafeUnpin for CorsManager
impl UnwindSafe for CorsManager
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more