Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在浏览器中拦截非ajax请求?_Javascript_Ember.js_Mocking_Ember Cli Mirage_Pretender.js - Fatal编程技术网

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

Javascript 是否可以在浏览器中拦截非ajax请求?,javascript,ember.js,mocking,ember-cli-mirage,pretender.js,Javascript,Ember.js,Mocking,Ember Cli Mirage,Pretender.js,是否可以使用JavaScript在浏览器中拦截HTTP请求,而这些请求不是通过XMLHttpRequestobject(ajax)完成的 我正在用模拟API服务器,它正在使用。我需要添加文件上传(图像)到应用程序。模拟上传没有问题,因为它是由ajax完成的。但是我无法截获由图像标记引起的GET请求(非ajax请求),因为假装器只截获通过XMLHttpRequest完成的请求,因此无法返回“上传”的数据 我是否也可以拦截非ajax请求 如果不是:那么什么是最佳实践?这就是我到目前为止所考虑的: 通

是否可以使用JavaScript在浏览器中拦截HTTP请求,而这些请求不是通过
XMLHttpRequest
object(ajax)完成的

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

我是否也可以拦截非ajax请求

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

  • 通过ajax检索图像,以便轻松拦截请求。例如,我可以将它们视为具有base64编码图像数据作为属性的余烬数据模型。但我不确定如何权衡。我担心这会导致性能问题和可能的内存泄漏,因为映像大小(>1MB)
  • 传递图像请求,并在ember cli附带的express server中处理它们。但只有当应用程序由ember cli提供服务时,模拟文件上传才会起作用。不能部署开发构建将是一个巨大的权衡

  • 您可以使用Wireshark嗅探数据

    我认为唯一的方法是使用


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

    如果我错了,请纠正我,但是Ajax的HTTP请求不是异步的吗;如中所示,请求被激发,执行将继续进行?与中一样,一旦发送,它就被发送。@Crowes ajax请求可以通过覆盖
    XMLHttpRequest
    对象来模拟。例如,invoker.js正在使用这种方法。但这不是这里的问题。我想知道是否支持这个用例。它也可以在窗口范围内使用,并提供类似于
    cache.put()
    的方法。我玩了一会儿,但没有成功。你知道缓存api是否会起作用吗?