UrlPrefix-strängar
I HTTP Server-API:et är en UrlPrefix- en unicode-sträng med brett tecken (UTF-16) med ett kanoniskt formulär som anger ett avsnitt i URL-namnområdet. Det används för att reservera ett avsnitt av URL-namnområdet för ett användarkonto eller registrera ett avsnitt i URL-namnområdet för en process.
UrlPrefix-format
En UrlPrefix har följande syntax:
"scheme://host:port/relativeURI"
Schema-, värd- och portelementen i en UrlPrefix måste vara närvarande och icke-tomma och måste följa följande regler:
-
schema
-
Måste vara antingen http eller https, allt i gemener.
-
värd
-
Måste vara ett fullständigt kvalificerat domännamn, en IPv4- eller IPv6-literalsträng eller ett jokertecken. Till skillnad från schemat, som måste vara gemener, är värddelen skiftlägeskänslig. Beroende på hur värddelen anges hamnar en UrlPrefix i någon av följande fyra routningskategorier, som beskrivs mer detaljerat nedan:
- Starkt jokertecken
- Explicit
- IP-bundet svagt jokertecken
- Svagt jokertecken
-
port
-
En numerisk decimalsträng som inte börjar med noll och som representerar ett giltigt TCP-portnummer (1 till 65 535). Det här värdet får inte vara ett jokertecken.
-
relativURI
-
RelativeURI-elementet är valfritt, men om det finns måste det alltid följas av ett snedstreck ("/"). Det här är en prefixsträng som anger ett underträd i datorns namnområde som anges i förhållande till schemat, värden och portvärdena. Till skillnad från schemat, som måste vara gemener, är den relativaURI-delen skiftlägeskänslig.
Exempel på korrekt formade UrlPrefixes är:
https://www.adatum.com:80/vroot/
https://adatum.com:443/secure/database/
https://+:80/vroot/
Host-Specifier kategorier
För flexibilitet och användarvänlighet stöder HTTP Server-API:et fyra olika sätt att ange värdar. De fyra kategorierna för värdspecificerare visas nedan i prioritetsordning:
-
starkt jokertecken (plustecken)
-
När värdelementet i ett UrlPrefix består av ett enda plustecken (+) matchar UrlPrefix alla möjliga värdnamn i kontexten för dess schema, port och relativaURI-element och hamnar i kategorin för starka jokertecken.
Ett starkt jokertecken är användbart när ett program behöver hantera begäranden som riktas till en eller flera relativaURI:er, oavsett hur begäranden kommer till datorn eller vilken webbplats de anger i värdrubrikerna. Användning av ett starkt jokertecken i den här situationen undviker behovet av att ange en fullständig lista över värd- och/eller IP-adresser.
-
explicit
-
Ett explicit värdnamn, till exempel ett fullständigt domännamn i värdelementet, placerar ett UrlPrefix i den explicita kategorin. Den här typen av värdelement matchas direkt mot värdrubrikerna för inkommande begäranden.
Explicita värdspecifikationer är användbara för program med flera webbplatser, till exempel webbservrar som levererar olika innehåll beroende på vilken webbplats begäran riktades till.
-
IP-bundet svagt jokertecken
-
När en IP-adress visas som värdelement hamnar UrlPrefix i kategorin IP-bundet svagt jokertecken. Den här typen av UrlPrefix matchar alla värdnamn för det angivna IP-gränssnittet med angivet schema, port och relativURI, och som inte redan har matchats av ett starkt jokertecken eller explicit UrlPrefix. IP-adressen tar ett av två formulär i värdelementet:
-
IPv4 Literal String
-
En IPv4-literal består av fyra prickade decimaltal, var och en i intervallet 0–255, till exempel 192,168,0,0.
-
IPv6 Literal String
-
En IPv6-literalsträng omges av hakparenteser och innehåller hexnummer avgränsade med kolon. till exempel: [::1] eller [3ffe:ffff::6ECB:0101].
IP-bundna värdspecificerare med svag jokertecken är avsedda för program som varierar det innehåll som de betjänar baserat på den väg som inkommande begäranden tar. Förlita dig inte på IP-bundna värdspecificerare med svag jokertecken för att framtvinga säkerhet.
-
-
Svag jokertecken (asterisk)
-
När en asterisk (*) visas som värdelement hamnar UrlPrefix i kategorin för svagt jokertecken. Den här typen av UrlPrefix matchar alla värdnamn som är associerade med det angivna schemat, porten och relativURI:n som inte redan har matchats av ett urlprefix med starkt jokertecken, explicit eller IP-bundet svagt jokertecken.
Den här värdspecifikationen kan användas som standardfångst i vissa fall eller användas för att ange ett stort avsnitt i URL-namnområdet utan att behöva använda många UrlPrefixes.
UrlPrefix Konfliktidentifiering under reservation och registrering
I reservations- och registreringssyfte behandlas de fyra olika kategorierna av UrlPrefix separat, utan hänvisning till varandra. Det går att registrera urlprefix som är i konflikt så länge de finns i olika kategorier. Endast inom samma kategori leder en konflikt till att ett reservationsförsök misslyckas.
Det skulle till exempel vara möjligt att reservera både den explicita UrlPrefix-https://www.adatum.com:80/vroot/
och det motstridiga starka jokertecknet UrlPrefix https://+:80/vroot/
, eftersom de tillhör olika kategorier. Ett efterföljande försök att reservera https://+:80/vroot/ till en annan användare skulle dock misslyckas eftersom det skulle strida mot en befintlig reservation i sin egen kategori.
Routningsbeteende
När du dirigerar en inkommande HTTP-begäran börjar HTTP Server-API:et med den starka jokerteckenkategorin och jämför den inkommande URL:en med både registrerade och reserverade UrlPrefix i den kategorin.
Om den inkommande URL:en matchar en reservation men inte en registrering misslyckas HTTP Server-API:et begäran. Detta förhindrar att en registrering med lägre prioritet kan hämta begäranden som inte är avsedda för den. Statusen för fel är 400 ("Felaktig begäran") i stället för 503 ("Tjänsten är inte tillgänglig"), eftersom en 503-retur ibland felaktigt tolkas av belastningsutjämningsgatewayer som anger att servern var överbelastad.
Om en matchande registrering hittas inom kategorin dirigeras begäran till den begärandekö som är associerad med den registreringen. Begäran dirigeras alltid till kön som är associerad med den längsta matchande UrlPrefix inom en kategori.
Om ingen matchning hittas i kategorin fortsätter HTTP Server-API:et till den explicita kategorin och upprepar samma procedur. Sammanfattningsordnad är den ordning i vilken kategorierna granskas enligt följande:
- Starkt jokertecken
- Explicit
- IP-Bound svagt jokertecken
- Svagt jokertecken
Om ingen matchning hittas i någon av kategorierna skickar HTTP Server-API:et ett svar med statuskoden 400 för att indikera att begäran inte kan dirigeras.
Längsta matchningsregel
I varje UrlPrefix-kategori dirigerar HTTP Server API en begäran till kön som är associerad med den längsta matchande UrlPrefix. Anta till exempel att följande två UrlPrefixes är registrerade i olika köer:
Queue1 https://www.adatum.com:80/
Queue2 https://www.adatum.com:80/dir/sna/
HTTP Server-API:et dirigerar en begäran om https://www.adatum.com:80/default.htm
till Queue1 och en begäran om https://www.adatum.com:80/dir/sna/snadefault.htm
till Queue2. Den dirigerar en begäran om https://www.adatum.com:80/dir/app.htm
till Queue1 eftersom den längsta fullständiga matchningen är med https://www.adatum.com:80/
UrlPrefix, inte med https://www.adatum.com:80/dir/sna
UrlPrefix.