Tarafından desteklenir
*Özel Indy sürümü gerektirir.
Application-Layer Protocol Negotiation (ALPN), uygulama katmanı protokol müzakeresi için bir Transport Layer Security (TLS) uzantısıdır. ALPN, uygulama katmanının, ek gidiş-dönüşlerden kaçınan ve uygulama katmanı protokollerinden bağımsız olan bir şekilde, güvenli bir bağlantı üzerinden hangi protokolün gerçekleştirileceğini müzakere etmesine olanak tanır. HTTP/1.x ile karşılaştırıldığında web sayfalarının sıkıştırılmasını iyileştiren ve gecikmesini azaltan güvenli HTTP/2 bağlantıları tarafından gereklidir.
TLSOptions.ALPNProtocols'ta, istemci tarafından hangi protokollerin desteklendiğini yapılandırabilirsiniz. İstemci sunucuya bağlandığında, bu protokoller ilk TLS handshake'i 'Client Hello' üzerinde gönderilir ve istemcinin desteklediği protokolleri listeler ve sunucu varsa hangi protokolün kullanılacağını seçer.
TsgcWSConnectionClient'ın ALPNProtocol özelliğine erişerek sunucu tarafından hangi protokolün seçildiğini öğrenebilirsiniz.
ServerYeni
bir TLS bağlantısı olduğunda, OnSSLALPNSelect olayı çağrılır, burada
istemci ve sunucu tarafından desteklenen bir protokol listesine erişebilir ve sunucu
bunlardan hangisinin desteklendiğini seçebilir.
Herhangi bir protokol için destek yoksa,
aProtocol boş bırakılabilir.
// Client
procedure OnClientConnect(Connection: TsgcWSConnection);
var
vProtocol: string;
begin
vProtocol := TsgcWSConnectionClient(Connection).ALPNProtocol;
end;
// Server
procedure OnSSLALPNSelect(Sender: TObject; aProtocols: TStringList; var aProtocol: string);
var
i: integer;
begin
for i := 0 to aProtocols.count - 1 do
begin
if aProtocols[i] = 'h2' then
begin
aProtocol := 'h2';
break;
end;
end;
end;