UrlPrefix sztringek
A HTTP Server API-ban a UrlPrefix egy széles karakterű (UTF-16) Unicode-sztring, amely egy olyan canonical form, amely megadja az URL-névtér egy szakaszát. Az URL-névtér egy szakaszának lefoglalására szolgál egy felhasználói fiókhoz, vagy regisztrálja az URL-névtér egy szakaszát egy folyamathoz.
UrlPrefix formátum
Az UrlPrefix szintaxisa a következő:
"scheme://host:port/relativeURI"
Az UrlPrefix sémájának, gazdagépének és portelemeinek jelen kell lenniük és nem üresnek kell lenniük, és be kell tartaniuk a következő szabályokat:
-
séma
-
Http vagy https lehet, mind kisbetűs.
-
gazdagép
-
Teljes tartománynévnek, IPv4 vagy IPv6 literális sztringnek vagy helyettesítő karakternek kell lennie. A kisbetűs sémával ellentétben a gazdagéprész nem érzékeny a kis- és nagybetűkre. A gazdagéprész megadásától függően az UrlPrefix az alábbi négy útválasztási kategória egyikébe tartozik, amelyeket az alábbiakban részletesebben ismertetünk:
- Erős helyettesítő karakter
- Világos
- IP-címhez kötött gyenge helyettesítő karakter
- Gyenge helyettesítő karakter
-
port
-
Decimális numerikus sztring, amely nem nullával kezdődik, és érvényes TCP-portszámot (1–65 535) jelöl. Ez az érték nem lehet helyettesítő karakter.
-
relativeURI
-
A relatívURI elem megadása nem kötelező, de ha jelen van, mindig perjel karaktert ("/") kell követni. Ez egy előtag-sztring, amely a gép névterén belül a séma, a gazdagép és a port értékeihez viszonyítva megadott részhalmazt jelzi. A kisbetűs sémától eltérően a relatívURI-rész nem érzékeny a kis- és nagybetűkre.
A megfelelően formázott UrlPrefixek például a következők:
https://www.adatum.com:80/vroot/
https://adatum.com:443/secure/database/
https://+:80/vroot/
Host-Specifier kategóriák
A rugalmasság és a könnyű használat érdekében a HTTP Server API négy különböző módszert támogat a gazdagépek megadására. A négy gazdagépválasztó kategória az alábbi sorrendben van felsorolva:
-
Erős helyettesítő karakter (pluszjel)
-
Ha az UrlPrefix gazdagépeleme egyetlen pluszjelből (+) áll, az UrlPrefix a séma, a port és a relativeURI elemek kontextusában lévő összes lehetséges gazdagépnévvel egyezik, és az erős helyettesítő karakterek kategóriájába tartozik.
Az erős helyettesítő karakterek akkor hasznosak, ha egy alkalmazásnak egy vagy több relatívURI-nak címzett kérést kell kiszolgálnia, függetlenül attól, hogy ezek a kérések hogyan érkeznek a gépre, vagy milyen helyet adnak meg a gazdagép fejlécében. Az erős helyettesítő karakterek használata ebben a helyzetben nem szükséges megadni a gazdagépek és/vagy IP-címek teljes listáját.
-
Explicit
-
Egy explicit gazdagépnév, például a gazdagépelem teljes tartományneve url-előtagot helyez el az explicit kategóriában. Ez a gazdagépelem közvetlenül a bejövő kérések gazdagépfejlécével van egyeztetve.
Az explicit gazdagép-specifikációk olyan többhelyes alkalmazások esetében hasznosak, mint például a webkiszolgálók, amelyek a kérés címzett helyétől függően különböző tartalmat szolgáltatnak.
-
IP-címhez kötött gyenge helyettesítő karakter
-
Ha egy IP-cím gazdaelemként jelenik meg, az UrlPrefix az IP-címhez kötött gyenge helyettesítő karakterek kategóriájába tartozik. Az ilyen típusú UrlPrefix egyezik a megadott IP-felület gazdagépnevével a megadott sémával, porttal és relatívURI-val, és amelyet még nem egyezett meg egy erős helyettesítő karakterrel vagy explicit URLPrefixtel. Az IP-cím a gazdagépelem két űrlapjának egyikét használja:
-
IPv4-konstans sztring
-
Az IPv4-literál négy pontozott decimális számból áll, mindegyiket a 0–255 tartományban, például 192.168.0.0 tartományban.
-
IPv6-konstans sztring
-
Az IPv6 literális sztring szögletes zárójelek közé van zárva, és kettősponttal elválasztott hexa számokat tartalmaz; például: [::1] vagy [3ffe:ffff::6ECB:0101].
Az IP-kötött gyenge helyettesítő karakterek gazdagép-definiálói olyan alkalmazásokhoz készültek, amelyek a bejövő kérések útvonala alapján változtatják meg az általuk kiszolgált tartalmat. A biztonság kikényszerítéséhez ne támaszkodjon AZ IP-címhez kötött gyenge helyettesítő karakterek gazdagép-azonosítóira.
-
-
gyenge helyettesítő karakter (csillag)
-
Ha egy csillag (*) gazdaelemként jelenik meg, az UrlPrefix a gyenge helyettesítő karakterek kategóriájába kerül. Az ilyen típusú UrlPrefix megegyezik a megadott sémához, porthoz és relatívURI-hoz társított gazdagépnévvel, amelyet még nem egyezett meg egy erős helyettesítő karakter, explicit vagy IP-kötött gyenge helyettesítő karakter urlPrefix.
Ez a gazdagép-specifikáció bizonyos körülmények között alapértelmezett catch-allként használható, vagy az URL-névtér nagy részének megadására is használható anélkül, hogy több URL-előtagot kellene használnia.
UrlPrefix ütközésészlelés foglalás és regisztráció során
Foglalási és regisztrációs célokból az URLPrefix négy különböző kategóriája külön, egymásra való hivatkozás nélkül kezelhető. Az ütköző UrlPrefixes-eket mindaddig regisztrálhatja, amíg különböző kategóriákba tartoznak. Csak ugyanabban a kategóriában történik ütközés, amely egy foglalási kísérlet meghiúsulását okozza.
Például a explicit UrlPrefix https://www.adatum.com:80/vroot/
és az ütköző erős helyettesítő UrlPrefix https://+:80/vroot/
is lefoglalható, mivel ezek különböző kategóriákba tartoznak. A https://+:80/vroot/ egy másik felhasználónak való lefoglalásának későbbi kísérlete azonban meghiúsulna, mert ütközne egy meglévő foglalással a saját kategóriájában.
Útválasztási viselkedés
Bejövő HTTP-kérések átirányításakor a HTTP Server API az erős helyettesítő karakter kategóriával kezdődik, és összehasonlítja a bejövő URL-címet a regisztrált és a fenntartott URL-címelőtagokkal az adott kategóriában.
Ha a bejövő URL-cím megfelel egy foglalásnak, de regisztrációnak nem, a HTTP Server API meghiúsul a kérésben. Ez megakadályozza, hogy az alacsonyabb prioritású regisztrációk átvehessék a nem neki szánt kéréseket. A hiba állapota 503 helyett 400 ("Hibás kérés"), mert a terheléselosztási átjárók néha tévesen úgy értelmezik az 503-as visszatérést, hogy azt jelzik, hogy a kiszolgáló túlterhelt volt.
Ha egyező regisztráció található a kategóriában, a rendszer átirányítja a kérést a regisztrációhoz társított kérési üzenetsorhoz. A kérés mindig a kategória leghosszabb egyező URL-címelőtagjával társított üzenetsorhoz lesz átirányítva.
Ha nem található egyezés a kategóriában, akkor a HTTP Server API a explicit kategóriára lép, és ugyanazt az eljárást ismétli. Összefoglalva a kategóriák vizsgálatának sorrendje a következő:
- Erős helyettesítő karakter
- Világos
- IP-Bound gyenge helyettesítő karakter
- Gyenge helyettesítő karakter
Ha egyik kategóriában sem található egyezés, a HTTP Server API egy 400-es állapotkóddal rendelkező választ küld, amely jelzi, hogy a kérés nem irányítható.
Leghosszabb egyezés szabály
A HTTP Server API minden UrlPrefix-kategórián belül átirányít egy kérést a leghosszabb egyező UrlPrefixhez társított üzenetsorhoz. Tegyük fel például, hogy a következő két URL-címelőtag van regisztrálva különböző üzenetsorokban:
Queue1 https://www.adatum.com:80/
Queue2 https://www.adatum.com:80/dir/sna/
A HTTP Server API átirányítja a https://www.adatum.com:80/default.htm
kérését a Queue1-be, és egy https://www.adatum.com:80/dir/sna/snadefault.htm
kérést a Queue2-be. A https://www.adatum.com:80/dir/app.htm
kérését átirányítja a Queue1-hez, mert a leghosszabb teljes egyezés az https://www.adatum.com:80/
UrlPrefixtel, nem pedig a https://www.adatum.com:80/dir/sna
UrlPrefixtel.