3

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

我正在使用ember-cli-mirage 模拟API 服务器,它正在使用fakeer。我需要将文件上传(图像)添加到应用程序。模拟上传没有问题,因为它是由 ajax 完成的。但我无法拦截由图像标签(非 ajax 请求)引起的 GET 请求,因为伪装者只拦截通过的请求XMLHttpRequest,因此无法返回“上传”的数据。

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

如果不是:那么应该将什么视为最佳实践?这是我到目前为止所考虑的:

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

1 回答 1

0

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

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

于 2017-01-20T18:28:30.540 回答