Cerințe: Interceptați toate cererile XMLHttpRequest, iar când interfața backend returnează codul de stare invalid de autentificare, săriți direct la interfața de autentificare și nu îl mai treceți. Poate fi folosită și pentru a solicita adăugarea semnăturilor unificate, rezolvarea automată a protocolului, statisticile apelurilor de interfață etc.
Recenzie:
Deși jQuery poate intercepta cererile Ajax, este limitat la apelantul care folosește metode ajax în jQuery și nu poate intercepta cererile folosind XMLHttpRequest nativ.Deoarece cererea ajax din jQuery este și o încapsulare a XMLHttpRequest, putem intercepta XMLHttpRequest。
ajax-hook este o bibliotecă ușoară pentru interceptarea obiectelor XMLHttpRequest ale browserului, care poate fi folosită pentru a preprocesa cereri, răspunsuri și erori înainte ca obiectul XMLHttpRequest să inițieze o cerere, după ce a primit conținutul răspunsului și când apare o eroare. Ajax-hook este foarte compatibil și poate rula pe orice browser care suportă ES5, deoarece nu se bazează pe funcțiile ES6.
Principiu: ajax-hook personalizează metodele și proprietățile din XMLHttpRequest pentru a suprascrie obiectul global XMLHttpRequest. Un strat de proxy este înfășurat pentru obiectul XMLHttpRequest.
Adresă Open Source:Autentificarea cu hyperlink este vizibilă.
Adresa CDN:Autentificarea cu hyperlink este vizibilă.
Proxy vs. Hook
Atât proxy(), cât și hook() pot fi folosite pentru a intercepta XMLHttpRequest-uri globale. Diferențele lor sunt:Cârlig() are o granularitate fină de interceptare, poate fi specific unei anumite metode, atribut sau callback al obiectului XMLHttpRequest, dar este mai dificil de folosit și, de multe ori, nu doar logica de business trebuie dispersată în diverse callback-uri, ci și predispusă la erori. Întrucâtproxy() are un grad ridicat de abstractizare, iar contextul cererii este construit (configurația informațiilor de cerere poate fi obținută direct în fiecare callback), ceea ce este mai simplu și mai eficient de folosit.
De cele mai multe ori, noiSe recomandă să folosești metoda proxy(), cu excepția cazului în care aceasta nu corespunde nevoilor tale。
Încearcă să adaugi interceptarea cererii ajax jQuery și interceptarea proxy în ajax-hook, codul este următorul:
Încearcă să trimiți o cerere get folosind jQuery și o poți vedeaAmbele pot fi interceptate, așa cum se arată în figura de mai jos:
Trimite o cerere folosind XMLHttpRequest nativ, discoverDoar ajax-hook poate intercepta, așa cum se arată în figura de mai jos:
Mai multe utilizări ale proxy-ajax-hook:
Exemplu:Autentificarea cu hyperlink este vizibilă.
(Sfârșit)
|