我试图在Firefox中编写一个简单的扩展,其中我修改了X-Frame-Allow
标题.
我简要地查看了文档,看到他们支持webRequest.onHeadersReceived.addListener()
.但是,当收到标题时,我无法让我的代码运行.
的manifest.json
{
"manifest_version": 2,
"name": "xframeoptions",
"version": "1.0",
"description": "Set X-Frame-Options to ALLOW",
"icons": {
"48": "icons/icon.png"
},
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["xframeoptions.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
xframeoptions.js
function rewriteHeader(e) {
console.log(e.responseHeaders);
for (var header of e.responseHeaders) {
console.log(header.name + ":" + header.value);
if (header.name == "X-Frame-Options") {
header.value = 'ALLOW';
modified = true;
break;
}
}
return {responseHeaders: e.responseHeaders};
}
console.log("Initializing xframeoptions extension ...test");
browser.webRequest.onHeadersReceived.addListener(
rewriteHeader, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习Firefox的WebExtension开发.我发现窗口调试工具非常有用,因为我可以在窗口上下文中交互式地评估javascript代码.
对于浏览器级别的Webextension API,在尝试类似地使用浏览器控制台时,我完全没有成功.例如,尝试使用选项卡API
单击menu-> developer-> browser console
在控制台命令行中输入以浏览器开头的任何表达式
"ReferenceError:浏览器未定义"
我尝试过使用chrome并得到同样的错误(阅读有关chrome.*vs browser的文章.*)
例如,尝试查找所有标签:
var querying=browser.tabs.query(queryInfo)
Run Code Online (Sandbox Code Playgroud)
要么
chrome.tabs.query()
Run Code Online (Sandbox Code Playgroud)
返回未定义的浏览器或chrome
请帮忙
以前,我可以为个人用法编写一个插件,something.xpi
然后点击它来安装它.
过了一会儿,mozilla介绍xpinstall.signatures.required
了你仍然可以绕过它.
然而,它并没有停止刺伤那些有兴趣将个人插件与世隔绝的开发人员.今天,只有web extensions
工作,我的基于XUL的插件被扔掉了.教程只讨论临时安装Web扩展,而我希望我的应用程序永远在Firefox上运行.
除了我是否可以使用Web扩展来写入文件或在独立页面中创建GUI,我还有一个更大的挑战:
如何在不创建个人使用的Mozilla帐户的情况下永久安装本地Web扩展?
我正在制作一个跟踪用户列表的WebExtension(适用于Firefox).用户可以从列表中添加/删除元素,或者将元素从一个列表切换到另一个列表,这意味着扩展需要使用最新版本的列表.
因此,要在桌面和Android上使用,扩展需要传输/同步一些数据(可以进行字符串化).
我正在尝试为用户找到一种尽可能简单的方法,而不使用外部服务.
理想的解决方案(对用户完全透明)将是使用storage.sync
,但尽管它在设备之间同步,但它(尚未)在普通Firefox(桌面)和Firefox for Android之间同步(实现跟踪在https:/ /bugzilla.mozilla.org/show_bug.cgi?id=1316442).
另一个解决方案是使用bookmarks
API,但Firefox for Android(https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks)也不支持它.
这让我有两个解决方案,我可以看到:
让用户向/从本地文件保存/检索数据,这意味着他们需要将文件复制到其他设备(这就是我现在所拥有的).
保存/从第三方服务器检索数据(这意味着我必须创建一个服务器,并让用户在其上创建一个帐户).
我还缺少其他任何解决方案吗?
firefox synchronization firefox-addon-webextensions firefox-android
Google Chrome在其chrome.webrequest API中包含一些功能(例如,http: //developer.chrome.com/extensions/samples.html#12a7bf1490a26359eadf10917e37c5b9),可用于将某些网址重定向到指定的网页.Chrome扩展程序使用阻止事件侦听器(chrome.webRequest.onBeforeRequest.addListener)并对目标网址执行重定向.我如何在FireFox附加组件中做类似的事情?
google-chrome webrequest firefox-addon google-chrome-extension firefox-addon-webextensions
我说的是 Chrome 扩展程序、Firefox WebExtensions、Edge 扩展程序……
在后台脚本而不是内容脚本中,是否有一种明确的方法可以知道我使用的是哪个浏览器?我需要对不同的浏览器做不同的操作。
是的,navigator.userAgent
可能有用,但不是很清楚。
是否有任何扩展 API 可用于执行此操作?类似的东西,chrome.extension.browserType
。(当然,这个真的不存在..)
javascript google-chrome-extension opera-extension firefox-addon-webextensions microsoft-edge-extension
我想在页面操作弹出窗口中获取当前选项卡的URL.
起初看起来很明显:只需使用选项卡 API即可.但是,如果我正确地解读文档,那么在Android上似乎不可用.所以我一直在寻找其他东西,并找到了pageAction API 的onClicked事件.
该pageAction API似乎被列为与Android和onClicked事件兼容标记为支持.这意味着它实际上会返回一个tabs.Tab对象.但它真的吗?有人试过吗?
检索URL的最佳方法是什么?我知道我可以使用内容脚本,让它在每个选项卡中运行,并创建一个长期的消息传递连接,以便在请求时将URL发送到页面操作弹出窗口.但是,与使用标签API的容易程度相比,这会非常低效并使代码变得非常复杂.
还有什么我可以做的吗?
javascript tabs android google-chrome-extension firefox-addon-webextensions
我正在学习如何使用Firefox Web Extensions API,并且正在使用IntelliJ.
有没有办法获得API的代码完成/建议?
我按照下面的答案中的步骤,但似乎没有一个完整的Firefox.
javascript firefox intellij-idea firefox-addon firefox-addon-webextensions
将我的 Chrome 扩展程序移植到 Firefox 网络扩展程序时,我无法发出任何网络请求,因为它们被同源策略阻止。
举个例子:
const headers = {"content-type": "application/json" };
window.fetch(myDomain + "/api/v3/token", { method: "GET", headers: headers });
Run Code Online (Sandbox Code Playgroud)
这失败并出现以下错误:
有没有办法将 Firefox 扩展配置为不考虑这些请求 CORS?相同的代码作为 Google Chrome 扩展程序工作得很好。
即使请求转到本地主机,这也是正确的。
我已经尝试使用 jquery 的$.ajax
方法和 axios 库来获得相同的结果(在 Chrome 中有效,在 Firefox 中无效),所以我认为问题不限于window.fetch
API。
编辑:我知道我可以在服务器端添加 CORS 处理程序,但我试图不这样做。为什么这在 Chrome 中有效,而在 Firefox 中无效?
编辑 2:扩展是一个弹出窗口
javascript same-origin-policy google-chrome-extension firefox-addon-webextensions
我有网络扩展,目前运行在Chrome,Firefox和Opera上.现在我想知道是否有一种方法可以使用相同的代码来构建Safari App Extension,可能类似于PhoneGap(在Safari App Extension项目中包装所有现有的JS代码),或者有一些限制,例如javascript的标签处理和一些事情只需要用本机代码编写.
谢谢
google-chrome-extension safari-extension firefox-addon-webextensions safari-app-extension