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