lilydocs
HTTP APIWebSocketConsumer
Güvenlik2 dk okuma

CORS

Tarayıcıların API’nize hangi origin, method ve header’larla erişebileceğini belirleyin.

CORS, browser’ın cross-origin yanıtı kullanabilmesi için uygulanan politikadır. Kullanıcının kimliğini veya işlem yetkisini doğrulamaz; bu kontroller guard’da kalır.

Global politika#

Aşağıdaki parça async başlangıç fonksiyonunuzda builder zincirine eklenebilir:

Rust
use std::time::Duration;
use lilyrs::http_api::{AppBuilder, CorsPolicy};

let policy = CorsPolicy::new()
    .allow_origins(["https://app.example.com"])
    .allow_methods(["GET", "POST", "PUT", "DELETE"])
    .allow_headers(["content-type", "authorization", "x-csrf-token"])
    .expose_headers(["x-request-id"])
    .allow_credentials(true)
    .max_age(Duration::from_secs(600));

let builder = AppBuilder::new("127.0.0.1:8080").cors(policy);

Sonrasında builder’ı build().await?.start().await? ile çalıştırın. Origin listesini gerçek frontend adreslerinizle değiştirin. Credentials kullanıldığında origin, method, header ve exposed header wildcard birleşimlerine izin verilmez.

Controller ve action politikaları#

Route’a özel bir politika için CorsPolicyProvider uygulayın. Controller veya action üzerinde #[cors(Provider)] seçin. Etkili politika sırası action → controller → global fallback şeklindedir.

CorsDisabled inherited politikayı boş/deny politikayla keser. Transport’un CORS kontrolünü devre dışı bırakan bir geçiş değildir.

Dinamik origin#

CorsOriginResolver::new(Arc<Extensions>) ve allows(&CorsOriginContext) uygulayan türü resolve_origins_with::<Resolver>() ile seçebilirsiniz. Resolver tür başına uygulama içinde paylaşılır; constructor’da Scoped servis çözmeyin. Context request cancellation görünümünü sağlar.

Origin lookup başarısızsa serbest erişime düşen bir fallback üretmeyin. Uygulamanızın kontrollü ret/hata politikasını uygulayın.

Preflight sırası#

Geçerli preflight genel middleware ve action guard’larından önce tamamlanabilir. CORS erişim yetkisi vermez; API’nizi korumak için authentication ve authorization gerekliliklerini ayrıca bağlayın.

İleri seçenekler#

Global CORS bir kez kaydedilir. allow_private_network özel ağ erişimini, allow_null_origin null origin kabulünü açıkça seçer. vary_by, max_age ve without_max_age response/cache politikasını ayarlar. Bunları yalnız uygulamanızın gerçekten ihtiyaç duyduğu erişim alanı için açın.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod