Një rregull e dërgon http://reports.example:80/ përmes një proxy por lejon http://reports.example/ të kalojë drejtpërdrejt. Këto URL përshkruajnë të njëjtin pikëfundore të zakonshme HTTP. Mospërputhja zakonisht vjen nga krahasimi fjalë për fjalë i porteve të analizuara.

URI.getPort() kthen -1 kur në URI nuk shfaqet asnjë port. Ai nuk e zëvendëson vlerën e parazgjedhur të skemës. Një politikë rrugëtimi që krahason vlerën me 80 do të humbasë URL-në e dytë.

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

Aplikoni të njëjtin normalizim në të dyja anët e krahasimit. Rregullimi vetëm i URI-së së kërkesës lë ende një destinacion të konfiguruar me port të lënë jashtë pa përputhje. Krahasoni hostin, portin efektiv dhe skemën e synuar; refuzoni destinacionet e keqformuara ose pa host përmes një rruge gabimi të përcaktuar.

Mos e ktheni çdo callback në vendim HTTP

Një përzgjedhës i parazgjedhur mund të konsultohet edhe për lidhje socketësh të papërpunuar, me skemën socket. Vetëm përputhja e hostit dhe portit nuk duhet ta bëjë atë callback të kthejë një proxy HTTP të destinuar për kërkesa URL. Delego skemat e pambështetura te përzgjedhësi i mëparshëm, duke ruajtur sjelljen e tij të përshtatshme.

Kapeni atë përzgjedhës të mëparshëm përpara se të instaloni tuajin. Kërkimi i parazgjedhur aktual nga brenda zëvendësuesit thjesht mund të thërrasë përsëri zëvendësuesin.

Regjistroni skemën, hostin, portin origjinal dhe portin efektiv kur diagnostikoni një mospërputhje. Mos u mbështetni në një numër të vetëm të vëzhguar ose në rendin e callback-eve mes implementimeve të JDK-së. Politika duhet të marrë një vendim të saktë për çdo URI të dhënë.

Artikuj të ngjashëm