代码之家  ›  专栏  ›  技术社区  ›  banncee

Chrome扩展通过PUT请求重定向到本地页面

  •  0
  • banncee  · 技术社区  · 5 年前

    我正在构建一个浏览器扩展,尝试将浏览器请求重定向到我的页面,其中包含大量数据,这些数据将包含在我根据请求的URL调用的服务返回的JSON数组中。例如,如果用户转到示例。com,我有一个 chrome.webRequest.onBeforeRequest.addListener 根据 urls 过滤器,调用一个AWS API网关端点,该端点用JSON对象中的事物列表进行响应。我需要我的本地页面在本地页面中显示该列表。

    我可以通过使用URL参数调用本地页面(然后将其视为GET请求)来展示一些小东西,但这对我想要传递的数据量不起作用。我该如何为客户创建POST请求 redirect 网址?

    或者,我是否应该使用其他模式来实现这一点?

    侦听器代码:

    chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
            if(swenToggle) {
                return { redirectUrl: chrome.extension.getURL("markup/simple.html?r=n&url=" + details.url) }; // This is fine for simple data
            } else { 
                //get the base URL 
                var baseUrl = new URL(details.url).hostname.split(".").slice(-2).join(".")
                var apiUrl = // Call AWS API here
                fetch(apiUrl).then(r => r.json()).then(result => {
                    console.log('RESULT : ' + result.body); // I need to pass this body to the redirectUrl below...
                })
                return { redirectUrl: chrome.extension.getURL("markup/complex.html?sourceUrl=" + baseUrl) };
            }
        },
        { urls: "example.com"},  
        ["blocking"]
    );
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   banncee    5 年前

    用稍微不同的方法解决了这个问题。而不是从后台调用AWS API。js,我将API调用所需的参数传递给 complex.html 作为URL参数,然后在中调用AWS API 复杂的html .