gpt4 book ai didi

javascript - 使用 Chrome 扩展程序在页面加载时重定向

转载 作者:行者123 更新时间:2023-11-28 01:14:12 24 4
gpt4 key购买 nike

我正在开发一个 Chrome 扩展程序,它可以自动将非 HTTPS 网站的用户重定向到 HTTPS 版本。

但是,当前的问题是用户必须手动激活此重定向。

使用 manifest.json 中的 content_scripts 可以轻松完成此任务,但是,根据 Chrome 文档,内容脚本“无法...使用 chrome.* API(chrome.extension 的部分内容除外)”。

所以,这是我的扩展的 list 文件:

{
"name": "SSL Redirect",
"version": "1.0",
"manifest_version": 2,
"description": "Redirects plain HTTP domain.com to the encrypted, HTTPS secured version.",

"permissions": [ "tabs", "http://*/*", "https://*/*" ],

"background" : {
"page": "body.html"
},

"browser_action": {
"default_icon": "icon.png"
},
"content_scripts": [
{
"matches": ["http://www.domain.com/*"],
"js": ["redirect.js"]
}
]
}

这是 js:

var domain = /domain.com\//;
var ssldomain = "ssl.domain.com\/";

function updateUrl(tab){

if(tab.url.match(ssldomain)) {
alert("You're already using the SSL site. :)")
throw { name: 'Error', message: 'Stopped running, already in SSL mode.' };
}

if(tab.url.match(domain)) {
var newurl = tab.url.replace(domain, ssldomain);
newurl = newurl.replace(/^http:/, 'https:');
newurl = newurl.replace("www.", "");
chrome.tabs.update(tab.id, {url: newurl});
}

if(!(tab.url.match(domain))) {
alert("This extension only works on domain.com.")
throw { name: 'Error', message: 'Stopped running, not on domain.com.' };
}


}

chrome.browserAction.onClicked.addListener(function(tab) {updateUrl(tab);});

我的最终目标是让它在任何与domain.com匹配的页面上自动运行,无需用户交互。

我有点卡住了。有什么想法吗?

最佳答案

1) 在内容脚本中,您可以使用更改 URL 的标准方法,因为您是在页面上下文中运行。即:

var oldUrl = location.href;
/* construct newUrl */
if(newUrl != oldUrl) location.replace(newUrl);

2) 废弃您已经写过的内容并阅读 chrome.webRequest API 。这将实现您所需要的,无需内容脚本或选项卡操作。

示例:

 chrome.webRequest.onBeforeRequest.addListener(
function(details) {
var url = details.url.replace(/^http/, "https");
return {redirectUrl: url};
},
{urls: ["http://domain.com/*"]},
["blocking"]
);

注意:您需要 "*://domain.com/*"

的主机权限

关于javascript - 使用 Chrome 扩展程序在页面加载时重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com