Pravilo šalje http://reports.example:80/ kroz proxy, ali pušta http://reports.example/ direktno. Ti URL-ovi opisuju istu običnu HTTP krajnju tačku. Nesklad obično dolazi iz doslovnog poređenja njihovih parsiranih portova.

URI.getPort() vraća -1 kada u URI-ju nema porta. Ne zamjenjuje zadanu vrijednost za šemu. Politika usmjeravanja koja vrijednost poredi sa 80 propustit će drugi URL.

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

Primijenite istu normalizaciju na obje strane poređenja. Popravljanje samo URI-ja zahtjeva i dalje ostavlja konfigurirano odredište s izostavljenim portom bez podudaranja. Uporedite host, efektivni port i namjeravanu šemu; odbijte neispravna odredišta ili ona bez hosta kroz definiranu putanju greške.

Ne pretvarajte svaki povratni poziv u HTTP odluku

Zadani selektor može se konsultovati i za veze sirovih soketa, koristeći šemu socket. Samo podudaranje hosta i porta ne smije uzrokovati da taj povratni poziv vrati HTTP proxy namijenjen URL zahtjevima. Prepustite nepodržane šeme prethodnom selektoru, čuvajući njegovo odgovarajuće ponašanje.

Zabilježite taj prethodni selektor prije instaliranja svog. Traženje trenutnog zadanog iz unutrašnjosti zamjene može jednostavno ponovo pozvati zamjenu.

Zabilježite šemu, host, izvorni port i efektivni port kada dijagnostikujete nesklad. Ne oslanjajte se na jedan uočeni broj ili redoslijed povratnih poziva kroz implementacije JDK-a. Politika treba donijeti ispravnu odluku za svaki dostavljeni URI.

Povezani članci