Bir qayda http://reports.example:80/ ünvanını proksi vasitəsilə göndərir, amma http://reports.example/ ünvanının birbaşa keçməsinə icazə verir. Bu URL-lər eyni adi HTTP son nöqtəsini təsvir edir. Uyğunsuzluq adətən onların təhlil edilmiş portlarını hərfi müqayisə etməkdən yaranır.

URI-də port görünmədikdə URI.getPort() -1 qaytarır. O, sxem üçün standart dəyəri əvəz etmir. Dəyəri 80 ilə müqayisə edən marşrutlaşdırma siyasəti ikinci URL-i qaçıracaq.

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

Eyni normallaşdırmanı müqayisənin hər iki tərəfinə tətbiq edin. Yalnız sorğu URI-sini düzəltmək portu buraxılmış konfiqurasiya olunmuş təyinatı yenə uyğunsuz qoyur. Hostu, effektiv portu və nəzərdə tutulan sxemi müqayisə edin; qüsurlu və ya hostsuz təyinatları müəyyən edilmiş xəta yolu ilə rədd edin.

Hər callback-i HTTP qərarına çevirməyin

Standart selektor xam soket bağlantıları üçün də socket sxemi ilə sorğulaşa bilər. Təkcə host və port uyğunluğu həmin callback-in URL sorğuları üçün nəzərdə tutulmuş HTTP proksisini qaytarmasına səbəb olmamalıdır. Dəstəklənməyən sxemləri əvvəlki selektora ötürün və onun uyğun davranışını qoruyun.

Həmin əvvəlki selektoru fərdi selektorunuzu quraşdırmazdan əvvəl yadda saxlayın. Əvəzedicinin içindən cari standartı axtarmaq sadəcə əvəzedicini yenidən çağıra bilər.

Uyğunsuzluğu diaqnostika edərkən sxemi, hostu, ilkin portu və effektiv portu qeyd edin. JDK tətbiqləri arasında bir müşahidə olunan rəqəmə və ya callback sırasına güvənməyin. Siyasət hər verilən URI üçün düzgün qərar verməlidir.

Əlaqəli məqalələr