Правило шаље http://reports.example:80/ кроз прокси, али пушта http://reports.example/ директно. Ти URL-ови описују исту обичну HTTP завршну тачку. Несклад обично долази из дословног поређења њихових парсираних портова.

URI.getPort() враћа -1 када у URI-ју нема порта. Не замењује подразумевану вредност за шему. Политика усмеравања која вредност пореди са 80 пропустиће други 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;
}

Примените исту нормализацију на обе стране поређења. Поправљање само URI-ја захтева и даље оставља конфигурисано одредиште са изостављеним портом без подударања. Упоредите хост, ефективни порт и намеравану шему; одбијте неисправна одредишта или она без хоста кроз дефинисану путању грешке.

Не претварајте сваки повратни позив у HTTP одлуку

Подразумевани селектор може се консултовати и за везе сирових сокета, користећи шему socket. Само подударање хоста и порта не сме да проузрокује да тај повратни позив врати HTTP прокси намењен URL захтевима. Препустите неподржане шеме претходном селектору, чувајући његово одговарајуће понашање.

Забележите тај претходни селектор пре инсталирања свог. Тражење тренутног подразумеваног из унутрашњости замене може једноставно поново позвати замену.

Забележите шему, хост, изворни порт и ефективни порт када дијагностикујете несклад. Не ослањајте се на један уочени број или редослед повратних позива кроз имплементације JDK-а. Политика треба да донесе исправну одлуку за сваки достављени URI.

Повезани чланци