Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wprowadzenie
YARP umożliwia domyślnie proxy'owanie połączeń WebSocket i SPDY. Ta obsługa współpracuje zarówno z bezpośrednim przekazywaniem, jak i z pełnym potokiem.
WebSockets to dwukierunkowy protokół przesyłania strumieniowego oparty na protokole HTTP/1.1 lub nowszym dostosowanym do protokołu HTTP/2.
SPDY jest prekursorem HTTP/2 i jest często używany w środowiskach Kubernetes.
Uaktualnienia HTTP/1.1
Protokoły WebSockets i SPDY są oparte na protokole HTTP/1.1 przy użyciu opcji o nazwie uaktualnień połączeń. YARP pełni funkcję proxy dla początkowego żądania, a jeśli serwer docelowy odpowiada za pomocą 101 Switching Protocols
, modernizuje połączenie do nieprzezroczystego, dwukierunkowego strumienia przy użyciu nowego protokołu. Usługa YARP nie obsługuje uaktualniania do innych protokołów, takich jak HTTP/2 w ten sposób.
Protokół HTTP/2
Protokół YARP obsługuje protokołu WebSocket przez protokół HTTP/2 począwszy od platformy .NET 7 i YARP 2.0. Kestrel jest jedynym dostępnym serwerem AspNetCore, który akceptuje przychodzące żądania HTTP/2 WebSocket, a wsparcie jest automatycznie włączone. Przeglądarki mogą wykrywać tę obsługę anonsowaną przez serwer i automatycznie przełączać się na protokół HTTP/2.
Wersje protokołu przychodzącego i wychodzącego nie muszą być zgodne. Przychodzące żądanie protokołu WebSocket może być http/1.1 lub 2. Nie ma żadnej konfiguracji specyficznej dla WebSockets dla żądań wychodzących, usługa YARP będzie używać wersji i polityki wersji ForwarderRequestConfig, aby określić, która wersja ruchu wychodzącego ma być używana. Te wartości domyślne to HTTP/2 i RequestVersionOrLower.
WebSockets wymagają różnych nagłówków HTTP dla protokołu HTTP/2, dlatego YARP doda i usunie te nagłówki w trakcie dostosowywania się do różnych wersji.
Po początkowym nawiązaniu połączenia WebSockets działają tak samo nad obiema wersjami HTTP.
Limit czasu
Limity czasu oczekiwania żądań HTTP (.NET 8+) mogą być stosowane do wszystkich żądań domyślnie lub zgodnie z zasadami. Te limity czasu zostaną wyłączone po negocjacji WebSocket. Będą one nadal stosowane do żądań gRPC. Aby uzyskać dodatkowe informacje na temat konfiguracji, zobacz Limity czasu.