Java ProxySelector: లేని HTTP మరియు HTTPS పోర్టులను సాధారణీకరించడం
అనుకూల ProxySelector లో గమ్యాలను పోల్చడానికి ముందు విడిచిపెట్టిన HTTP పోర్టులను సాధారణీకరించండి మరియు HTTP నియమాలను ముడి socket ఎంపిక నుండి బయట ఉంచండి.
ఒక నియమం 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 ను మాత్రమే సరిచేయడం వల్ల విడిచిపెట్టిన పోర్టుతో కాన్ఫిగర్ చేసిన గమ్యం ఇప్పటికీ సరిపోలకుండా ఉంటుంది. హోస్ట్, ప్రభావవంతమైన పోర్టు మరియు ఉద్దేశించిన స్కీమ్ను పోల్చండి; వికృత లేదా హోస్ట్ లేని గమ్యాలను నిర్వచించిన లోప మార్గం ద్వారా తిరస్కరించండి.
ప్రతి callback ను HTTP నిర్ణయంగా మార్చవద్దు
డిఫాల్ట్ ఎంపికదారుని ముడి socket కనెక్షన్ల కోసం కూడా socket స్కీమ్తో అడగవచ్చు. కేవలం హోస్ట్ మరియు పోర్టు సరిపోలడం ఆ callback URL అభ్యర్థనల కోసం ఉద్దేశించిన HTTP ప్రాక్సీని తిరిగి ఇవ్వడానికి కారణం కాకూడదు. మద్దతు లేని స్కీమ్లను మునుపటి ఎంపికదారుకు అప్పగించి, దాని తగిన ప్రవర్తనను కాపాడండి.
మీ స్వంతదాన్ని ఇన్స్టాల్ చేయడానికి ముందు ఆ మునుపటి ఎంపికదారుని పట్టుకోండి. ప్రత్యామ్నాయం లోపలి నుండి ప్రస్తుత డిఫాల్ట్ను వెతకడం ప్రత్యామ్నాయాన్ని మళ్లీ పిలవవచ్చు.
అసమానతను నిర్ధారించేటప్పుడు స్కీమ్, హోస్ట్, అసలు పోర్టు మరియు ప్రభావవంతమైన పోర్టును నమోదు చేయండి. JDK అమలుల మధ్య గమనించిన ఒక సంఖ్య లేదా callback క్రమంపై ఆధారపడకండి. విధానం ఇచ్చిన ప్రతి URI కి సరైన నిర్ణయం తీసుకోవాలి.