拦截GET请求并重定向到生成的文件

时间:2014-06-10 18:30:37

标签: javascript xml google-chrome-extension xmlhttprequest google-chrome-devtools

我正在构建chrome扩展并使用chrome.webRequest来拦截所有GET请求。其中一个请求从http://test.com/bla.xml获取XML文件。这个XML文件托管在我的网络服务器上,所以直截了当。我的问题是,如何发送生成的XML文件并将其返回。我知道如何拦截和修改webRequest中的URL,但我不太确定如何将其发送到我动态创建的文件。

chrome.webRequest.onBeforeRequest.addListener(
    function (details) {
        if (details.url === 'http://test.com/bla.xml') {
            var xmlDoc = "<person>me</person>";
            return { redirectUrl: xmlDoc }; 
        }

我希望能够将XHR重定向到动态生成的文件。这个文件不一定是XML文档,它可以是我用存储的blob创建的jpg文件。

更新:我尝试转发数据URI,现在收到此错误:

XMLHttpRequest cannot load http://test.com/bla.xml. The request was redirected to a URL ('data:text/xml;base64,sdfkldsfjdslfjsfsjf') which has a disallowed scheme for cross-origin requests. 

我已将http://www: /和data:添加到清单中。

1 个答案:

答案 0 :(得分:2)

最直接的方法是动态生成要在服务器上返回的文件。

除此之外,您是否尝试过数据:URI?鉴于您可以控制重定向URL,您可以对要在数据中返回的内容进行编码:URI并将其作为重定向目标返回。见下文参考:

https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs