Qoida http://reports.example:80/ manzilini proksi orqali yuboradi, lekin http://reports.example/ manziliga to‘g‘ridan-to‘g‘ri o‘tishga ruxsat beradi. Bu URLlar bir xil oddiy HTTP so‘nggi nuqtasini tasvirlaydi. Nomuvofiqlik odatda tahlil qilingan portlarni so‘zma-so‘z taqqoslashdan kelib chiqadi.

URI.getPort() URI ichida port bo‘lmasa -1 qaytaradi. U sxemaning standart qiymatini almashtirmaydi. Qiymatni 80 bilan taqqoslaydigan marshrutlash siyosati ikkinchi URLni o‘tkazib yuboradi.

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

Bir xil normallashtirishni taqqoslashning ikkala tomoniga qo‘llang. Faqat so‘rov URI sini tuzatish porti tushirib qoldirilgan sozlangan manzilni baribir mos kelmay qoldiradi. Xost, samarali port va mo‘ljallangan sxemani taqqoslang; noto‘g‘ri yoki xostsiz manzillarni belgilangan xato yo‘li orqali rad eting.

Har bir callbackni HTTP qaroriga aylantirmang

Standart selektordan xom socket ulanishlari uchun ham socket sxemasi bilan so‘rash mumkin. Faqat xost va port mos kelishi bu callback URL so‘rovlari uchun mo‘ljallangan HTTP proksini qaytarishiga sabab bo‘lmasligi kerak. Qo‘llab-quvvatlanmaydigan sxemalarni oldingi selektorga topshiring, uning mos xatti-harakatini saqlang.

O‘zingiznikini o‘rnatishdan oldin o‘sha oldingi selektorni ushlab oling. Joriy standartni almashtirgich ichidan qidirish almashtirgichni yana chaqirishi mumkin.

Nomuvofiqlikni diagnostika qilishda sxema, xost, asl port va samarali portni qayd eting. JDK amalga oshirishlari orasida kuzatilgan bitta raqamga yoki callback tartibiga tayanmang. Siyosat har bir berilgan URI uchun to‘g‘ri qaror qabul qilishi kerak.

O'xshash maqolalar