Krav: Opsnap alle XMLHttpRequest-anmodninger, og når backend-grænsefladen returnerer login-statuskoden, spring direkte til login-interfacet og send den ikke længere. Den kan også bruges til at anmode om tilføjelse af ensartede signaturer, automatisk protokolopløsning, interface-kaldstatistikker osv.
Anmeldelse:
Selvom jQuery kan opsnappe Ajax-forespørgsler, er det begrænset til kalderen, der bruger ajax-metoder i jQuery, og kan ikke opsnappe forespørgsler med native XMLHttpRequest.Da ajax-forespørgslen i jQuery også er en indkapsling af XMLHttpRequest, kan vi faktisk opsnappe XMLHttpRequest。
ajax-hook er et letvægtsbibliotek til opsnapning af XMLHttpRequest-objekter i browseren, som kan bruges til at forbehandle anmodninger, svar og fejl, før XMLHttpRequest-objektet initierer en anmodning, efter at have modtaget svarets indhold, og når en fejl opstår. Ajax-hook er meget kompatibel og kan køre på enhver browser, der understøtter ES5, da den ikke er afhængig af ES6-funktioner.
Princip: ajax-hook tilpasser metoderne og egenskaberne i XMLHttpRequest for at tilsidesætte det globale XMLHttpRequest-objekt. Et lag af proxy er pakket ind til XMLHttpRequest-objektet.
Open source-adresse:Hyperlink-login er synlig.
CDN-adresse:Hyperlink-login er synlig.
proxy vs. hook
Både proxy() og hook() kan bruges til at opsnappe globale XMLHttpRequests. Deres forskelle er:hook() har en fin interceptionsgranularitet, kan være specifik for en bestemt metode, attribut eller callback af XMLHttpRequest-objektet, men det er mere besværligt at bruge, og ofte skal forretningslogikken ikke blot spredes i forskellige callbacks, men også være tilbøjelig til fejl. hvorimodproxy() har en høj grad af abstraktion, og anmodningskonteksten er bygget (anmodningsinformationskonfigurationen kan hentes direkte i hvert callback), hvilket er enklere og mere effektivt at bruge.
For det meste gør viDet anbefales at bruge proxy()-metoden, medmindre den ikke opfylder dine behov。
Prøv at tilføje jQuery ajax-anmodningsopsnappning og proxy-aflytning i ajax-hook, koden er som følger:
Prøv at sende en get-anmodning med jQuery, så kan du se denBegge kan opsnappes, som vist i figuren nedenfor:
Send en forespørgsel ved hjælp af den oprindelige XMLHttpRequest, discoverKun ajax-hook kan opsnappe, som vist i figuren nedenfor:
Flere anvendelser af ajax-hook proxy:
Eksempel:Hyperlink-login er synlig.
(Slut)
|