Vereisten: Onderschep alle XMLHttpRequest-verzoeken, en wanneer de backend-interface de login-ongeldige statuscode teruggeeft, spring direct naar de logininterface en geef deze niet meer door. Het kan ook worden gebruikt om de toevoeging van unified signatures, automatische protocolresolutie, interface-aanroepstatistieken, enzovoort aan te vragen.
Recensie:
Hoewel jQuery Ajax-verzoeken kan onderscheppen, is het beperkt tot de aanroeper die ajax-methoden in jQuery gebruikt en kan het geen verzoeken onderscheppen met native XMLHttpRequest.Omdat het ajax-verzoek in jQuery ook een encapsulatie is van XMLHttpRequest, kunnen we daadwerkelijk XMLHttpRequest onderscheppen。
ajax-hook is een lichtgewicht bibliotheek voor het onderscheppen van XMLHttpRequest-objecten in de browser, die kan worden gebruikt om verzoeken, antwoorden en fouten vooraf te verwerken voordat het XMLHttpRequest-object een verzoek start, na ontvangst van de inhoud van de antwoord, en wanneer er een fout optreedt. Ajax-hook is zeer compatibel en kan draaien op elke browser die ES5 ondersteunt, omdat het niet afhankelijk is van ES6-functies.
Principe: ajax-hook past de methoden en eigenschappen in XMLHttpRequest aan om het globale XMLHttpRequest-object te overschrijven. Een proxylaag wordt gewrapt voor het XMLHttpRequest-object.
Open source adres:De hyperlink-login is zichtbaar.
CDN-adres:De hyperlink-login is zichtbaar.
Proxy versus haak
Zowel proxy() als hook() kunnen worden gebruikt om globale XMLHttpRequests te onderscheppen. Hun verschillen zijn:hook() heeft een fijne interceptiegranulariteit, kan specifiek zijn voor een bepaalde methode, attribuut of callback van het XMLHttpRequest-object, maar het is lastiger te gebruiken en vaak moet niet alleen de bedrijfslogica verspreid worden over verschillende callbacks, maar ook gevoelig voor fouten. terwijlproxy() heeft een hoge mate van abstractie, en de verzoekcontext wordt opgebouwd (de configuratie van de verzoekinformatie-informatie kan direct worden verkregen bij elke callback), wat eenvoudiger en efficiënter in gebruik is.
Meestal zijn weHet wordt aanbevolen om de proxy()-methode te gebruiken, tenzij deze niet aan je behoeften voldoet。
Probeer jQuery ajax request interception en proxy interception toe te voegen aan ajax-hook, de code is als volgt:
Probeer een get request te sturen met jQuery en je kunt het zienBeide kunnen worden onderschept, zoals getoond in de onderstaande figuur:
Stuur een verzoek met native XMLHttpRequest, ontdekAlleen ajax-haak kan onderscheppen, zoals getoond in de onderstaande figuur:
Meer toepassingen van ajax-hook proxy:
Voorbeeld:De hyperlink-login is zichtbaar.
(Einde)
|