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:
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.