React.js 微前端订阅主应用网络请求
React.js micro frontend subscribe to main app network requests
我有一个 React.js 应用程序(chrome 扩展微前端)被注入到另一个前端应用程序中。
我无权更改主应用程序代码。
是否可以订阅并查看主应用发出的 HTTP 请求?
谢谢。
您可以通过以下方式查看主应用执行的 HTTP 请求:
const windowFetch = window.fetch
window.fetch = function (reqestUrl) {
console.log('reqestUrl: ' + reqestUrl)
console.log('arguments: ' + JSON.stringify(arguments)) // method, headers, body
return windowFetch.apply(this, arguments)
}
更新:
当代码简单地粘贴到页面控制台时它可以工作,但不幸的是对于内容脚本,”内容脚本看到的window对象是不一样的window 页面看到的对象。"
解决方案来源:
https://gist.github.com/devjin0617/3e8d72d94c1b9e69690717a219644c7a
灵感来自:
Access window variable from Content Script
附加设置:
manifest.json (V2)
{
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["inject.js"],
"all_frames": true
}
],
"web_accessible_resources": [
"content.js"
]
}
content.js
console.log(window);
inject.js
/**
* injectScript - Inject internal script to available access to the `window`
*
* @param {type} file_path Local path of the internal script.
* @param {type} tag The tag as string, where the script will be append (default: 'body').
* @see {@link
*/
function injectScript(file_path, tag) {
var node = document.getElementsByTagName(tag)[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', file_path);
node.appendChild(script);
}
injectScript(chrome.extension.getURL('content.js'), 'body');
对于清单 V3:
清单更改:
"web_accessible_resources": [
{
"resources": ["content.js"],
"matches": ["https://*.anywebsite.com/*"]
}
]
Inject.js
的变化
injectScript(chrome.runtime.getURL('content.js'), 'body');
我有一个 React.js 应用程序(chrome 扩展微前端)被注入到另一个前端应用程序中。
我无权更改主应用程序代码。
是否可以订阅并查看主应用发出的 HTTP 请求?
谢谢。
您可以通过以下方式查看主应用执行的 HTTP 请求:
const windowFetch = window.fetch
window.fetch = function (reqestUrl) {
console.log('reqestUrl: ' + reqestUrl)
console.log('arguments: ' + JSON.stringify(arguments)) // method, headers, body
return windowFetch.apply(this, arguments)
}
更新:
当代码简单地粘贴到页面控制台时它可以工作,但不幸的是对于内容脚本,”内容脚本看到的window对象是不一样的window 页面看到的对象。"
解决方案来源:
https://gist.github.com/devjin0617/3e8d72d94c1b9e69690717a219644c7a
灵感来自:
Access window variable from Content Script
附加设置:
manifest.json (V2)
{
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["inject.js"],
"all_frames": true
}
],
"web_accessible_resources": [
"content.js"
]
}
content.js
console.log(window);
inject.js
/**
* injectScript - Inject internal script to available access to the `window`
*
* @param {type} file_path Local path of the internal script.
* @param {type} tag The tag as string, where the script will be append (default: 'body').
* @see {@link
*/
function injectScript(file_path, tag) {
var node = document.getElementsByTagName(tag)[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', file_path);
node.appendChild(script);
}
injectScript(chrome.extension.getURL('content.js'), 'body');
对于清单 V3:
清单更改:
"web_accessible_resources": [
{
"resources": ["content.js"],
"matches": ["https://*.anywebsite.com/*"]
}
]
Inject.js
的变化injectScript(chrome.runtime.getURL('content.js'), 'body');