0

Возможно ли перехватить HTTP-запросы в браузере с помощью JavaScript, которые не выполняются через XMLHttpRequest объект (ajax)?Возможно ли перехватить запрос без аякса в браузере?

Я издеваюсь над сервером API с ember-cli-mirage, который использует pretender. Мне нужно добавить загрузку файлов (изображений) в приложение. Откупочная загрузка не проблема, поскольку она выполняется ajax. Но я не могу перехватить запрос GET, вызванный тегом изображения (не-ajax-запрос), поскольку претендент только перехватывает запросы, сделанные через XMLHttpRequest, и поэтому не может вернуть «загруженные» данные.

В любом случае, я мог бы также перехватывать запросы без аякса?

Если нет: что следует считать лучшей практикой? Это то, что я рассмотрел до сих пор:

  1. Извлечение изображений через ajax, чтобы я мог легко перехватить запрос. Например. Я мог бы рассматривать их как модели данных ember-data, имеющие данные изображения в кодировке base64 в качестве атрибута. Но я не уверен в компромиссе. Я боюсь, что это вызовет проблемы с производительностью и возможные утечки памяти из-за размера изображения (> 1 МБ).
  2. Запросы Passthrough для изображений и обработки их в экспресс-сервере, поставляемые с ember-cli. Но тогда насмешливая загрузка файла будет работать, только если приложение будет обслуживаться ember-cli. И неспособность развертывать сборки разработки будет большим компромиссом.
+0

Исправьте меня, если я ошибаюсь, но не является асинхронным HTTP-запросом Ajax; как в, запрос уволен и выполнение выполняется независимо? Как и в случае, когда оно отправлено, оно отправляется. – Crowes

+0

@Crowes Запросы ajax могут быть издевательскими путем перезаписывания объекта XMLHttpRequest. Например. Этот метод использует pretender.js. Но это не вопрос. – jelhan

ответ

-1

Вы могли бы, возможно, использовать Wireshark нюхать данные

0

Я думаю, что единственный способ сделать это состоит в использовании service worker.

Работники службы fetch могут перехватить любой запрос. Однако поддержка браузера еще не очень хорошая.

+0

Мне интересно, поддерживает ли этот кеш [Cache api] (https://developer.mozilla.org/en-US/docs/Web/API/Cache). Он также доступен в области окна и предоставляет такие методы, как 'cache.put()'. Я немного поиграл, но не смог. Вы знаете, может ли кеш-апи сделать трюк? – jelhan

Смежные вопросы