Требования: Перехватить все запросы XMLHttpRequest, и когда интерфейс сервера возвращает код статуса недействительного входа, переходите напрямую на интерфейс входа и больше не передавайте его. Он также может использоваться для запроса добавления унифицированных сигнатур, автоматического разрешения протокола, статистики вызовов интерфейса и т.д.
Обзор:
Хотя jQuery может перехватывать запросы Ajax, он ограничен вызовущим, использующими ajax-методы в jQuery, и не может перехватить запросы с использованием нативного XMLHttpRequest.Поскольку ajax-запрос в jQuery также является инкапсуляцией XMLHttpRequest, мы можем фактически перехватить XMLHttpRequest。
ajax-hook — это лёгкая библиотека для перехвата браузерных объектов XMLHttpRequest, которая может использоваться для предварительной обработки запросов, ответов и ошибок до начала запроса объектом XMLHttpRequest, после получения содержимого ответа и при возникновении ошибки. Ajax-hook очень совместим и может работать в любом браузере, поддерживающем ES5, так как не зависит от функций ES6.
Принцип: ajax-hook настраивает методы и свойства в XMLHttpRequest, чтобы переопределить глобальный объект XMLHttpRequest. Для объекта XMLHttpRequest оборачивается слой прокси.
Открытый исходный код:Вход по гиперссылке виден.
Адрес CDN:Вход по гиперссылке виден.
Прокси против крючка
И proxy(), и hook() могут использоваться для перехвата глобальных XMLHttpRequests. Их различия таковы:hook() обладает тонкой гранулярностью перехвата, может быть специфичен для определённого метода, атрибута или обратного вызова объекта XMLHttpRequest, но использовать его сложнее, и часто бизнес-логика должна быть разбросана по разным обратным вызовам, но и подвержена ошибкам. тогда какproxy() обладает высокой степенью абстракции, и создаётся контекст запроса (конфигурацию информации о запросе можно получить напрямую в каждом обратном вызове), что проще и эффективнее в использовании.
Чаще всего мыРекомендуется использовать метод прокси(), если он не соответствует вашим потребностям。
Попробуйте добавить jQuery ajax request interception и proxy interception в ajax-hook, код выглядит следующим образом:
Попробуйте отправить запрос на получение через jQuery, и вы увидите егоОба можно перехватить, как показано на рисунке ниже:
Отправьте запрос с использованием нативного XMLHttpRequest, обнаружитеТолько ajax-hook может перехватить, как показано на рисунке ниже:
Больше применений ajax-hook прокси:
Пример:Вход по гиперссылке виден.
(Конец)
|