Řetězce adresy URLPrefix
V rozhraní API serveru HTTP je UrlPrefix řetězec unicode s širokým znakem (UTF-16) s kanonickým formulářem, který určuje oddíl oboru názvů url. Slouží k rezervaci oddílu oboru názvů adresy URL pro uživatelský účet nebo registraci oddílu oboru názvů adresy URL pro proces.
Formát UrlPrefix
Adresa URLPrefix má následující syntaxi:
"scheme://host:port/relativeURI"
Schéma, prvky hostitele a portu adresy UrlPrefix musí být přítomné a neprázdné a musí dodržovat následující pravidla:
-
schéma
-
Musí to být http nebo https, to vše malými písmeny.
-
hostitel
-
Musí to být plně kvalifikovaný název domény, řetězec literálu IPv4 nebo IPv6 nebo zástupný znak. Na rozdíl od schématu, které musí být malými písmeny, je část hostitele nerozlišující malá a malá písmena. V závislosti na tom, jak je zadaná část hostitele, spadá adresa URLPrefix do jedné z následujících čtyř kategorií směrování, které jsou podrobněji popsány níže:
- Silný zástupný znak
- Explicitní
- Slabý zástupný znak vázaný na IP adresu
- Slabý zástupný znak
-
port
-
Desetinný číselný řetězec, který nezačíná nulou a představuje platné číslo portu TCP (1 až 65 535). Tato hodnota nemůže být zástupný znak.
-
relativeURI
-
Element relativeURI je nepovinný, ale pokud je k dispozici, musí za ním vždy následovat znak lomítka ("/"). Jedná se o řetězec předpony, který označuje podstrom v rámci oboru názvů počítače určeného vzhledem k hodnotám schématu, hostitele a portu. Na rozdíl od schématu, které musí být malými písmeny, je část relativeURI nerozlišující malá a velká písmena.
Mezi příklady správně vytvořených oprav UrlPrefixes patří:
https://www.adatum.com:80/vroot/
https://adatum.com:443/secure/database/
https://+:80/vroot/
kategorie Host-Specifier
Pro flexibilitu a snadné použití podporuje rozhraní API HTTP Serveru čtyři různé způsoby zadávání hostitelů. Čtyři kategorie specifikátoru hostitele jsou uvedeny níže v pořadí podle priority:
-
silný zástupný znak (znaménko plus)
-
Pokud se prvek hostitele UrlPrefix skládá z jediného znaménka plus (+), urlPrefix odpovídá všem možným názvům hostitelů v kontextu jeho schématu, portu a relativního identifikátoruURI a spadá do silné zástupné kategorie.
Silný zástupný znak je užitečný, když aplikace potřebuje obsluhovat požadavky adresované jednomu nebo více relativním identifikátorům URI bez ohledu na to, jak tyto požadavky přicházejí na počítač nebo na jaký web zadávají v hlavičce hostitele. Použití silného zástupného znaku v této situaci zabrání nutnosti zadat vyčerpávající seznam hostitelů a/nebo IP adres.
-
explicitní
-
Explicitní název hostitele, například plně kvalifikovaný název domény v elementu hostitele, umístí Adresu URLPrefix do explicitní kategorie. Tento druh prvku hostitele se shoduje přímo s hlavičkami hostitele příchozích požadavků.
Specifikace explicitního hostitele jsou užitečné pro aplikace s více lokalitami, jako jsou webové servery, které doručují jiný obsah v závislosti na lokalitě, na kterou byl požadavek směrován.
-
slabý zástupný znak svázaný s IP adresou
-
Když se JAKO prvek hostitele zobrazí IP adresa, pak adresa UrlPrefix spadá do kategorie slabé zástupné dokumentace vázané na IP adresu. Tento typ adresy URLPrefix odpovídá jakémukoli názvu hostitele pro zadané rozhraní IP se zadaným schématem, portem a relativním identifikátorem URL, který ještě nebyl spárován silným zástupným znakem nebo explicitní adresou URLPrefix. IP adresa má v elementu hostitele jednu ze dvou forem:
-
řetězec literálu IPv4
-
Literál IPv4 se skládá ze čtyř tečkovaných desetinných čísel v rozsahu 0–255, například 192.168.0.0.
-
řetězec literálu IPv6
-
Literál IPv6 je uzavřený v hranatých závorkách a obsahuje šestnáctkové čísla oddělená dvojtečkami; Například: [::1] nebo [3ffe:ffff:::6ECB:0101].
Specifikátory hostitele se slabým zástupným znakem vázané na IP adresu jsou určeny pro aplikace, které liší obsah, který obsluhují, na základě trasy pořízené příchozími požadavky. Nespoléhejte na specifikátory hostitele se slabým zástupným znakem vázané na IP adresu a vynucujte zabezpečení.
-
-
slabý zástupný znak (hvězdička)
-
Když se hvězdička (*) zobrazí jako prvek hostitele, pak UrlPrefix spadá do slabé zástupné kategorie. Tento typ adresy UrlPrefix odpovídá jakémukoli názvu hostitele přidruženému k zadanému schématu, portu a relativnímu identifikátoru URL, který ještě nebyl spárován silným zástupným znakem, explicitním nebo ip vázaných slaboznamovým znakem UrlPrefix.
Tuto specifikaci hostitele je možné použít jako výchozí zachytávání za určitých okolností nebo můžete použít k určení velké části oboru názvů url, aniž byste museli používat mnoho oprav UrlPreopravy.
Detekce konfliktů UrlPrefix během rezervace a registrace
Pro účely rezervace a registrace jsou čtyři různé kategorie UrlPrefixu zpracovávány samostatně, bez odkazu na sebe navzájem. Konfliktní opravy UrlPreopravy je možné zaregistrovat, pokud jsou v různých kategoriích. Konflikt v rámci stejné kategorie způsobí selhání pokusu o rezervaci.
Bylo by například možné rezervovat explicitní adresu UrlPrefix https://www.adatum.com:80/vroot/
i konfliktní silné zástupné adresou URLPrefix https://+:80/vroot/
, protože patří do různých kategorií. Při následném pokusu o rezervaci https://+:80/vroot/ jinému uživateli by však došlo k selhání, protože by došlo ke konfliktu se stávající rezervací ve vlastní kategorii.
Chování směrování
Při směrování příchozího požadavku HTTP začíná rozhraní API serveru HTTP se silnou kategorií zástupných znaků a porovnává příchozí adresu URL s registrovanými i rezervovanými opravami UrlPreopravy v dané kategorii.
Pokud příchozí adresa URL odpovídá rezervaci, ale ne registraci, rozhraní API serveru HTTP požadavek selže. Tím zabráníte tomu, aby registrace s nižší prioritou mohly žádosti vyzvednout, které nejsou určené pro ni. Stav selhání je 400 (Chybný požadavek) místo 503 (Služba není k dispozici), protože vrácení 503 je někdy omylem interpretováno branami vyrovnávání zatížení, což značí, že server byl přetížen.
Pokud se v kategorii najde odpovídající registrace, požadavek se přesměruje do fronty požadavků přidružené k této registraci. Požadavek se vždy směruje do fronty přidružené k nejdelší odpovídající adrese UrlPrefix v kategorii.
Pokud se v kategorii nenajde žádná shoda, rozhraní API serveru HTTP pokračuje do explicitní kategorie a opakuje stejný postup. Pokud chcete shrnout, pořadí, ve kterém jsou kategorie zkoumány, je následující:
- Silný zástupný znak
- Explicitní
- IP-Bound slabý zástupný znak
- Slabý zástupný znak
Pokud se v žádné z kategorií nenajde žádná shoda, rozhraní API serveru HTTP odešle odpověď se stavovým kódem 400, který indikuje, že požadavek nelze směrovat.
Pravidlo nejdelší shody
V rámci každé kategorie UrlPrefix směruje rozhraní API HTTP Serveru požadavek do fronty přidružené k nejdelší odpovídající adrese UrlPrefix. Předpokládejme například, že následující dvě opravy UrlPreopravy jsou zaregistrované v různých frontách:
Queue1 https://www.adatum.com:80/
Queue2 https://www.adatum.com:80/dir/sna/
Rozhraní API serveru HTTP směruje požadavek na https://www.adatum.com:80/default.htm
do fronty1 a požadavek na https://www.adatum.com:80/dir/sna/snadefault.htm
do fronty2. Směruje požadavek na https://www.adatum.com:80/dir/app.htm
do Fronty1, protože nejdelší úplná shoda je s https://www.adatum.com:80/
UrlPrefix, ne s https://www.adatum.com:80/dir/sna
UrlPrefix.