Можно ли перехватить не-AJAX-запрос в браузере?
Можно ли перехватывать HTTP-запросы в браузере с помощью JavaScript, которые не выполняются через XMLHttpRequest
объект (ajax)?
Я издеваюсь над сервером API с http://www.ember-cli-mirage.com/, который использует pretender. Мне нужно добавить файл загрузки (изображения) в приложение. Насмешливая загрузка не проблема, так как она сделана ajax. Но я не могу перехватить GET-запрос, вызванный тегом изображения (не-AJAX-запрос), так как претендент только перехватывает запросы, выполненные через XMLHttpRequest
и, следовательно, не может вернуть "загруженные" данные.
Могу ли я в любом случае перехватывать не-AJAX-запросы?
Если нет: что следует считать лучшей практикой? Это то, что я рассмотрел до сих пор:
- Получение изображений через ajax, чтобы я мог легко перехватить запрос. Например, я мог бы обращаться с ними как с угольными моделями данных, имеющими в качестве атрибута данные изображения в кодировке base64. Но я не уверен насчет компромисса. Боюсь, что это приведет к проблемам с производительностью и возможным утечкам памяти из-за размера изображения (> 1 МБ).
- Выполнение запросов на изображения и их обработка на экспресс-сервере, поставляемом с ember-cli. Но тогда загрузка поддельного файла будет работать только в том случае, если приложение обслуживается ember-cli. А невозможность развертывания сборок для разработки была бы большим компромиссом.
2 ответа
Я думаю, что единственный способ сделать это - использовать работника сервиса.
Сервисные работники fetch
Событие может перехватить любой запрос. Однако поддержка браузера пока не очень хорошо.
Возможно, вы могли бы использовать Wireshark, чтобы понюхать данные