OkHttp Basiese proxy-verifikasie: stop afgekeurde herpogings
Gebruik OkHttp se proxyAuthenticator vir proxy-uitdagings en stop die herhaling van 'n onveranderde magtigingspoging.
Vir 'n HTTP-proxy wat Basiese verifikasie bied, kan OkHttp se proxyAuthenticator 'n versoek terugstuur wat geloofsbriewe dra. Gee null terug nadat 'n magtigingspoging reeds afgekeur is, eerder as om dieselfde antwoord weer te stuur:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Hierdie skets gebruik rekeningwaardes uit die toepassing se geheime konfigurasie. Die wag laat 'n eerste poging toe en stop 'n herhaalde een. Dit implementeer Basies, nie elke skema wat 'n proxy mag adverteer nie; ondersoek die uitdaging voordat jy daardie antwoord kies.
As die finale resultaat 407 bly, vergelyk die gekose proxy, die geadverteerde skema en die gedokumenteerde rekeningidentiteit. 'n Afgekeurde wagwoord, 'n onondersteunde metode en 'n verkeerde gebruikersnaamvorm verg verskillende regstellings. Hou daardie waarnemings en die finale status in geredigeerde diagnostiek.
CONNECT het 'n ander terugroepkonteks: OkHttp dokumenteer 'n sintetiese preemptiewe proxy-verifikasie-uitdaging voordat die tonnel oopgemaak word. Hanteer daardie konteks volgens die API eerder as om te aanvaar elke terugroep verteenwoordig 'n gewone bestemmingsantwoord.
Die aparte authenticator is vir bestemmingsbediener-verifikasie. Hou sy geloofsbriewe apart van die proxy-aanmelding; 'n generiese interceptor wat 'n proxywagwoord op elke uitgaande versoek plaas, kan dit op die verkeerde omvang stuur.
Historiese verslae beskryf ook implementeringsfoute, insluitend die hantering van afgekeurde proxy-antwoordliggame. Teken die OkHttp-weergawe en die finale uitruiling aan voordat jy 'n huidige faling aan 'n ou verslag toeskryf. Die herpogingsbesluit moet steeds 'n onveranderde geloofsbriefpoging stop wat geen nuttige nuwe antwoord het nie.