Vaatimukset: Sieppaa kaikki XMLHttpRequest-pyynnöt, ja kun taustarajapinta palauttaa kirjautumisen virheellisen tilakoodin, siirry suoraan kirjautumisrajapintaan eikä enää vältä sitä. Sitä voidaan käyttää myös yhtenäisten allekirjoitusten lisäämiseen, automaattiseen protokollaratkaisuun, rajapintapuhelutilastoihin jne.
Arvostelu:
Vaikka jQuery voi siepata Ajax-pyyntöjä, se on rajoitettu kutsujaan, joka käyttää ajax-metodeja jQueryssä, eikä se voi siepata pyyntöjä natiivisti XMLHttpRequestilla.Koska ajax-pyyntö jQueryssä on myös XMLHttpRequestin kapselointi, voimme itse asiassa siepata XMLHttpRequestin。
ajax-hook on kevyt kirjasto selaimen XMLHttpRequest-objektien sieppaamiseen, jota voidaan käyttää pyyntöjen, vastausten ja virheiden esikäsittelyyn ennen XMLHttpRequest-objektin aloittamista, vastauksen vastaanoton jälkeen ja virheen sattuessa. Ajax-hook on erittäin yhteensopiva ja voi toimia millä tahansa selaimella, joka tukee ES5:ttä, sillä se ei ole riippuvainen ES6:n ominaisuuksista.
Periaate: ajax-hook mukauttaa XMLHttpRequestin metodit ja ominaisuudet ohittamaan globaalin XMLHttpRequest-objektin. XMLHttpRequest-objektille kääritään välityspalvelinkerros.
Avoimen lähdekoodin osoite:Hyperlinkin kirjautuminen on näkyvissä.
CDN-osoite:Hyperlinkin kirjautuminen on näkyvissä.
Proxy vs. Hook
Sekä proxy() että hook() voidaan käyttää globaalien XMLHttp-pyyntöjen sieppaamiseen. Niiden erot ovat:hook() omaa hienon leikkausgranulaarisuuden, voi olla spesifinen tietylle XMLHttpRequest-objektin metodille, attribuudille tai callbackille, mutta sen käyttö on hankalampi, ja usein liiketoimintalogiikkaa ei tarvitse hajauttaa eri kutsuihin, vaan se on myös altis virheille. kun taasproxy() omaa korkean abstraktion asteen, ja pyyntökonteksti rakennetaan (pyynnön tiedon konfiguraatio saadaan suoraan jokaisessa callbackissa), mikä on helpompaa ja tehokkaampaa käyttää.
Useimmiten meOn suositeltavaa käyttää proxy()-menetelmää, ellei se vastaa tarpeitasi。
Yritä lisätä jQuery ajax request interception ja proxy interception ajax-hookiin, koodi on seuraava:
Kokeile lähettää get-pyyntö jQueryllä, niin näet senMolemmat voidaan siepata, kuten alla olevassa kuvassa näkyy:
Lähetä pyyntö natiivilla XMLHttpRequestilla, löydäVain ajax-hook voi katkaista, kuten alla olevassa kuvassa näkyy:
Lisää ajax-hook-proxyn käyttötarkoituksia:
Esimerkki:Hyperlinkin kirjautuminen on näkyvissä.
(Loppu)
|