એક નિયમ http://reports.example:80/ ને પ્રોક્સી દ્વારા મોકલે છે પણ http://reports.example/ ને સીધું જવા દે છે. તે બંને URL સમાન સામાન્ય HTTP એન્ડપોઇન્ટ વર્ણવે છે. વિસંગતતા સામાન્ય રીતે તેમના પાર્સ કરેલા પોર્ટની શબ્દશઃ તુલના કરવાથી આવે છે.

URI માં કોઈ પોર્ટ ન હોય ત્યારે URI.getPort() -1 પરત કરે છે. તે સ્કીમ માટે ડિફોલ્ટને બદલતું નથી. મૂલ્યની 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 સ્કીમ સાથે પૂછી શકાય છે. ફક્ત યજમાન અને પોર્ટનું મેળ ખાવાથી તે કૉલબેક URL વિનંતીઓ માટે બનાવેલી HTTP પ્રોક્સી પરત કરવા ન જોઈએ. અસમર્થિત સ્કીમોને પાછલા સિલેક્ટરને સોંપો અને તેનું યોગ્ય વર્તન જાળવી રાખો.

તમારું કસ્ટમ સિલેક્ટર સ્થાપિત કરતા પહેલાં તે પાછલું સિલેક્ટર પકડી રાખો. બદલીની અંદરથી વર્તમાન ડિફોલ્ટ શોધવાથી ફરી બદલીને જ કૉલ થઈ શકે છે.

વિસંગતતાનું નિદાન કરતી વખતે સ્કીમ, યજમાન, મૂળ પોર્ટ અને અસરકારક પોર્ટ લોગ કરો. JDK અમલીકરણોમાં એક અવલોકિત સંખ્યા કે કૉલબેકના ક્રમ પર આધાર રાખશો નહીં. નીતિએ દરેક આપેલ URI માટે સાચો નિર્ણય લેવો જોઈએ.

સંબંધિત લેખો