lilydocs
HTTP APIWebSocketConsumer
Bağlantı2 dk okuma

Origin ve subprotocol

Tarayıcı ve servis istemcileri için izin verilen Origin’leri ve Lily v2 protokol seçimini açıkça yapılandırın.

Origin politikası hangi web sayfalarının bağlantı açmasına izin verildiğini ifade eder. Subprotocol seçimi istemci ve sunucunun hangi uygulama protokolünde konuşacağını belirler. İkisi authentication'dan ayrı kararlardır.

Tarayıcı profili#

ServerConfig parçası
use lilyrs::websocket::ServerConfig;
let policy = ServerConfig {
    allowed_origins: vec!["https://app.example.com".into()],
    supported_protocols: vec!["lily.v2".into()],
    require_subprotocol: true,
    ..ServerConfig::default()
};

Policy'yi builder'a .config(policy) ile verin. Bunun bütün ServerConfig nesnesini seçtiğini, merkezi config ile alan bazında merge yapmadığını hatırlayın. Origin scheme, host ve varsa port içerir; path, query, fragment veya credentials içermez. Karşılaştırma exact'tir.

Varsayılanlar ve açık izinler#

Alan Varsayılan Anlamı
allowed_origins Boş Origin taşıyan browser isteklerini kendiliğinden kabul etmez
allow_any_origin false Mevcut bütün Origin'leri kabul etme tercihi
allow_missing_origin false Origin taşımayan istemcilere ayrı izin
supported_protocols lily.v2 Sunucunun destek listesi
require_subprotocol false Ortak subprotocol seçimini zorunlu tutup tutmama

allowed_origins = ["*"] geçersizdir. Her Origin'e izin vermek isteniyorsa ayrı allow_any_origin seçeneği vardır; bu seçenek missing Origin'e izin vermez. Origin göndermeyen CLI/Rust istemcisi için allow_missing_origin = true seçilir. Kabul edilmeyen bir Origin'in gönderilmiş olması hâlâ reddedilme nedenidir.

Protokol seçimi#

İstemci new WebSocket(url, "lily.v2") ile protokol önerir. Sunucu ortak değeri kendi preference sırasına göre seçer. Destek listesine başka bir isim eklemek codec'i otomatik değiştirmez. Lily v2 envelope desteği ile subprotocol header zorunluluğu farklı ayarlardır.

Bağlantı context'indeki supports_protocol(name) yalnızca seçilmiş protokolü exact karşılaştırır; istemcinin sunduğu bütün listeyi aramaz. İlk bağlantıyı kurarken istemci örneğindeki namespace ve envelope alanlarını da koruyun.

CORS ve authentication ile ilişkisi#

Bu mekanizma HTTP crate'indeki CORS middleware, preflight ve response-header sözleşmesi değildir. HTTP CORS örneğini WS builder'a ekleyerek Origin politikasını kuramazsınız. Origin tek başına kimlik kanıtı da değildir; özel istemciler kabul edilen bir Origin iddia edebilir.

Oturum doğrulamasını authentication, cookie ile cross-site erişim modelini session ve CSRF sayfasındaki akışla birlikte tasarlayın. Kullanıcı/nesne yetkisi ise mesaj guard katmanında uygulanır.

Bu sayfanın kaynakları v0.1.0

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

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod