Вимоги: Перехопити всі запити XMLHttpRequest, і коли бекенд-інтерфейс поверне код недійсного статусу входу, одразу переходити на інтерфейс входу і більше не передавати його. Його також можна використовувати для запиту на додавання уніфікованих підписів, автоматичного розв'язання протоколу, статистики викликів інтерфейсу тощо.
Огляд:
Хоча jQuery може перехоплювати запити Ajax, він обмежений для виклику, який використовує методи ajax у jQuery, і не може перехоплювати запити за допомогою рідного XMLHttpRequest.Оскільки ajax-запит у jQuery також є інкапсуляцією XMLHttpRequest, ми можемо фактично перехопити XMLHttpRequest。
ajax-hook — це легка бібліотека для перехоплення браузерних об'єктів XMLHttpRequest, яка може використовуватися для попередньої обробки запитів, відповідей і помилок перед тим, як об'єкт XMLHttpRequest ініціює запит, після отримання відповіді та коли виникає помилка. Ajax-hook дуже сумісний і може працювати в будь-якому браузері, який підтримує ES5, оскільки не залежить від функцій ES6.
Принцип: ajax-hook налаштовує методи та властивості в XMLHttpRequest для перевизначення глобального об'єкта XMLHttpRequest. Шар проксі обгортається для об'єкта XMLHttpRequest.
Відкрита адреса:Вхід за гіперпосиланням видно.
Адреса CDN:Вхід за гіперпосиланням видно.
Проксі проти гачка
І проксі(), і hook() можуть використовуватися для перехоплення глобальних XMLHttpЗапитів. Їхні відмінності такі:hook() має тонку гранулярність перехоплення, може бути специфічним для певного методу, атрибута або зворотного виклику об'єкта XMLHttpRequest, але це складніше у використанні, і часто бізнес-логіку потрібно розкидати по різних зворотних викликах, а й схильність до помилок. Той час якproxy() має високий ступінь абстракції, а контекст запиту створюється (конфігурація інформації запиту може бути отримана безпосередньо в кожному зворотному виклику), що є простішим і ефективнішим у використанні.
Більшість часу миРекомендується використовувати метод проксі(), якщо він не відповідає вашим потребам。
Спробуйте додати jQuery ajax request interception та proxy interception у ajax-hook, код виглядає так:
Спробуйте надіслати запит на отримання через jQuery, і ви зможете це побачитиОбидва можна перехопити, як показано на рисунку нижче:
Надішліть запит за допомогою нативного XMLHttpRequest, discoverПерехоплює лише ajax-hook, як показано на рисунку нижче:
Більше використання проксі ajax-hook:
Приклад:Вхід за гіперпосиланням видно.
(Кінець)
|