Як просто зробити зручний дебаг і не лазити в код або як бородаті хакери перехоплюють ajax-запити. порушуючи вашу безпеку.
Listener виклику методу у об'єкта
Припустимо, у нас є об'єкт app. у нього є метод doStaf () і нам потрібно дізнатися, що приходить йому на вхід.
Для цього нам необхідно виконати наступний код:
Даний код використовуючи анонімну функцію переопределяет app.doStaf () функцією, в якій ми виконуємо потрібні нам маніпуляції з аргументами, після чого викликаємо колишній app.doStaf (). зберігся в замиканні.
Далі, для зручності, загорніть весь цей код в функцію:
Зверніть увагу на порядок аргументів: першим передаємо рядок-назва методу або функції, яку потрібно слухати (перехопити), другим - колбек, який потрібно виконати на виклик функції або методу і тільки третім передаємо об'єкт, метод якого потрібно перехопити. Так зроблено, тому що 3-й параметр - не обов'язковий і якщо його немає, то метод буде братися з об'єкта window.
Ця функція може перехопити виклик тільки глобально оголошених об'єктів або функцій.
Так само виклик callback загорнутий в try. Це потрібно для того, що б не зламати виконання функції в разі, якщо в вашому коді виникнуть помилки.
Перехоплення ajax-запиту
На завершення, використовуючи описану вище функцію, перехопимо виклик будь-якого ajax-запиту, повешана слухач методу send () на об'єкті xmlHttpRequest:
Тепер, маючи необхідні навички, ви можете перехоплювати як виклики console.log (). так і, наприклад. запити всередині платіжної системи.