TsgcWebSocketProxyServer › Özellikler › SecurityOptions
Handshake kabul kurallarını tanımlar: izin verilen kökenler ve RFC 6455 handshake doğrulaması.
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Name | Varsayılan | Açıklama |
|---|---|---|
OriginsAllowed | "" | Tarayıcı WebSocket handshake'leri için kabul edilen kökenlerin virgülle ayrılmış izin listesi. Boş bırakılması tüm kökenlere izin verir. |
EnforceWebSocketVersion | True | Sec-WebSocket-Version'ı 13 olmayan bir RFC 6455 handshake'ini reddeder. |
ValidateWebSocketKey | True | Sec-WebSocket-Key'i geçerli bir 16 baytlık base64 nonce olmayan bir RFC 6455 handshake'ini reddeder. |
Herhangi bir trafik, Proxy içinde tanımlanan yukarı akış sunucusuna iletilmeden önce proxy'nin hangi origin'lerden WebSocket handshake kabul ettiğini kısıtlamak için OriginsAllowed kullanın. Varsayılan olarak tüm origin'lere izin verilir; boş olmayan herhangi bir değer bir izin listesini etkinleştirir ve proxy, Origin başlığı eşleşmeyen bağlantıları kapatır. Desenler, port için joker karakterleri kabul eder (örneğin tek bir origin için http://127.0.0.1:5555 veya o host'taki herhangi bir portu kabul etmek için http://127.0.0.1:*). Birden çok origin'i virgülle ayırın. OriginsAllowed değerini boş bir dizeye ayarlamak izin verici varsayılanı geri yükler.
EnforceWebSocketVersion ve ValidateWebSocketKey WebSocket yükseltmesinin kendisini güçlendirir ve varsayılan olarak etkindir. EnforceWebSocketVersion etkin olduğunda, proxy 13 dışında bir sürüm isteyen bir handshake'e yükseltmeyi tamamlamak yerine HTTP 426 Upgrade Required ve bir Sec-WebSocket-Version: 13 başlığı ile yanıt verir. ValidateWebSocketKey etkin olduğunda, proxy, RFC 6455 tarafından gerektirildiği üzere Sec-WebSocket-Key'i eksik olan veya 16 bayta çözülen 24 karakterlik bir base64 değeri olmayan herhangi bir handshake'i HTTP 400 Bad Request ile reddeder. Her iki kontrol de yalnızca RFC 6455 yoluna uygulanır, bu nedenle eski Hixie76 istemcileri etkilenmez. Yalnızca uyumsuz bir istemciyle birlikte çalışmanız gerekiyorsa ikisinden birini False olarak ayarlayın.
Aynı seçenekler TsgcWebSocketServer, TsgcWebSocketHTTPServer ve http.sys sunucusu TsgcWebSocketServer_HTTPAPI üzerinde de mevcuttur. Gelen mesajların boyutunu sınırlamak için MaxMessageSize'a bakınız.
oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oProxy.SecurityOptions.EnforceWebSocketVersion := true;
oProxy.SecurityOptions.ValidateWebSocketKey := true;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;