Reegel saadab http://reports.example:80/ puhverserveri kaudu, kuid laseb http://reports.example/ minna otse. Need URL-id kirjeldavad sama tavalist HTTP-lõpp-punkti. Erinevus tuleneb tavaliselt nende parsitud portide sõnasõnalisest võrdlemisest.

URI.getPort() tagastab -1, kui URI-s pole porti. See ei asenda skeemi vaikeväärtust. Marsruutimispoliitika, mis võrdleb väärtust 80-ga, jätab teise URL-i kahe silma vahele.

String scheme = uri.getScheme();
int port = uri.getPort();
if (port == -1) {
    if ("http".equalsIgnoreCase(scheme)) port = 80;
    else if ("https".equalsIgnoreCase(scheme)) port = 443;
}

Rakendage sama normaliseerimist võrdluse mõlemale poolele. Ainult päringu URI parandamine jätab konfigureeritud sihtkoha, millel on port välja jäetud, ikkagi sobimatuks. Võrrelge hosti, tegelikku porti ja kavandatud skeemi; lükake vigased või hostita sihtkohad tagasi määratletud veatee kaudu.

Ärge muutke iga tagasikutset HTTP-otsuseks

Vaikimisi valijalt võib küsida ka tooresocketite ühenduste kohta, kasutades skeemi socket. Ainult hosti ja pordi kokkulangevus ei tohi panna seda tagasikutset tagastama HTTP-puhverserverit, mis on mõeldud URL-päringutele. Delegeerige toetamata skeemid eelmisele valijale, säilitades selle sobiva käitumise.

Jäädvustage see eelmine valija enne oma valija paigaldamist. Praeguse vaikeväärtuse otsimine asendaja seest võib lihtsalt asendaja uuesti kutsuda.

Erinevuse diagnoosimisel logige skeem, host, algne port ja tegelik port. Ärge toetuge ühele vaadeldud arvule ega tagasikutsete järjekorrale JDK rakenduste lõikes. Poliitika peaks tegema iga esitatud URI jaoks õige otsuse.

Seotud artiklid