是否可以在浏览器中拦截非ajax请求?

时间:2017-01-20 13:45:56

标签: javascript ember.js mocking ember-cli-mirage pretender.js

是否可以使用JavaScript通过XMLHttpRequest对象(ajax)来拦截浏览器中的HTTP请求?

我正在使用ember-cli-mirage模拟一个使用pretender的API服务器。我需要将文件上传(图像)添加到应用程序。模拟上传不是问题,因为它是由ajax完成的。但我无法拦截由图片标记(非Ajax请求)引起的GET请求,因为伪装者只是拦截通过XMLHttpRequest完成的请求,因此无法返回"已上传&#34 ;数据

无论如何我还可以拦截非ajax请求吗?

如果没有:那么最佳做法应该是什么呢?这是我到目前为止所考虑的:

  1. 通过ajax检索图像,以便我可以轻松拦截请求。例如。我可以将它们视为具有base64编码图像数据作为属性的余烬数据模型。但我不确定这种权衡。我担心这会导致性能问题和图像大小可能导致内存泄漏(> 1MB)。
  2. 直接请求图片并在装有ember-cli的快速服务器中处理它们。但是,只有当应用程序由ember-cli提供时,模拟文件上传才会起作用。而且无法部署开发版本将是一个很大的权衡。

2 个答案:

答案 0 :(得分:0)

我认为唯一的方法是使用service worker

服务工作者fetch事件可以拦截任何类型的请求。但是浏览器支持还不是很好。

答案 1 :(得分:-1)

您也许可以使用Wireshark来嗅探数据