एउटा नियम 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 जडानका लागि पनि socket स्किमसँग सोध्न सकिन्छ। केवल होस्ट र पोर्ट मिल्नुले त्यो कलब्याकले URL अनुरोधका लागि इच्छित HTTP प्रोक्सी फर्काउन हुँदैन। असमर्थित स्किमहरू अघिल्लो चयनकर्तालाई सुम्पनुहोस्, त्यसको उपयुक्त व्यवहार कायम राख्नुहोस्।

आफ्नो कस्टम चयनकर्ता स्थापना गर्नु अघि त्यो अघिल्लो चयनकर्ता समात्नुहोस्। प्रतिस्थापनको भित्रबाट हालको पूर्वनिर्धारित खोज्दा प्रतिस्थापनलाई फेरि कल गर्न सक्छ।

असमझदारीको निदान गर्दा स्किम, होस्ट, मूल पोर्ट र प्रभावकारी पोर्ट लग गर्नुहोस्। JDK कार्यान्वयनहरूबीच एउटा देखिएको संख्या वा कलब्याकको क्रममा निर्भर नरहनुहोस्। नीतिले प्रत्येक दिइएको URI का लागि सही निर्णय लिनुपर्छ।

सम्बन्धित लेखहरू