【问题标题】:Intercept GET request and redirect to generated file拦截 GET 请求并重定向到生成的文件
【发布时间】:2014-06-12 01:14:06
【问题描述】:

我正在构建一个 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:/// 和 data: 添加到清单中。

【问题讨论】:

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


    【解决方案1】:

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

    除此之外,您是否尝试过 data: URI?鉴于您可以控制重定向 URL,您可以将要返回的内容编码为 data: URI 并将其作为重定向目标返回。参考如下:

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

    【讨论】:

    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多