Java ProxySelector: കാണാത്ത HTTP, HTTPS പോർട്ടുകൾ സാധാരണീകരിക്കുക
ഇഷ്ടാനുസൃത ProxySelector-ൽ ലക്ഷ്യസ്ഥാനങ്ങൾ താരതമ്യം ചെയ്യുന്നതിന് മുമ്പ് ഒഴിവാക്കിയ HTTP പോർട്ടുകൾ സാധാരണീകരിക്കുക, കൂടാതെ HTTP നിയമങ്ങൾ അസംസ്കൃത സോക്കറ്റ് തിരഞ്ഞെടുപ്പിൽ നിന്ന് പുറത്ത് നിർത്തുക.
ഒരു നിയമം 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-ക്കും നയം ശരിയായ തീരുമാനം എടുക്കണം.