Chrome 扩展重定向到本地页面 POST 请求
Chrome Extension Redirect to Local Page with POST Request
我正在构建一个浏览器扩展,我尝试将浏览器请求重定向到我的页面,其中包含大量数据,这些数据将包含在从我根据请求调用的服务返回的 JSON 数组中URL。例如,如果用户转到 example.com,我有一个 chrome.webRequest.onBeforeRequest.addListener
根据 urls
过滤器拦截它,调用一个 AWS API 网关端点以列表响应JSON 对象中的事物。我需要我的本地页面在本地页面中显示该列表。
我可以通过使用 URL 参数调用本地页面来显示一些小东西(然后将其视为 GET 请求),但这对我要传递的数据量不起作用。如何为 redirect
URL 创建 POST 请求?
或者,我应该使用其他模式来执行此操作吗?
监听代码:
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"]
);
用稍微不同的方法解决了它。我没有从 background.js 调用 AWS API,而是将 API 调用所需的参数作为 URL 参数传递给 complex.html
,然后调用 AWS API 在 complex.html
.
我正在构建一个浏览器扩展,我尝试将浏览器请求重定向到我的页面,其中包含大量数据,这些数据将包含在从我根据请求调用的服务返回的 JSON 数组中URL。例如,如果用户转到 example.com,我有一个 chrome.webRequest.onBeforeRequest.addListener
根据 urls
过滤器拦截它,调用一个 AWS API 网关端点以列表响应JSON 对象中的事物。我需要我的本地页面在本地页面中显示该列表。
我可以通过使用 URL 参数调用本地页面来显示一些小东西(然后将其视为 GET 请求),但这对我要传递的数据量不起作用。如何为 redirect
URL 创建 POST 请求?
或者,我应该使用其他模式来执行此操作吗?
监听代码:
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"]
);
用稍微不同的方法解决了它。我没有从 background.js 调用 AWS API,而是将 API 调用所需的参数作为 URL 参数传递给 complex.html
,然后调用 AWS API 在 complex.html
.