【发布时间】:2012-04-16 11:59:21
【问题描述】:
我正在制作一个非常简单的 Chrome 扩展程序,它将 http 协议上的页面重定向到 https 协议(如果存在)。我正在调试,我发现了 facebook,它同时具有 http 和 https。
代码在这里:
function redirect() {
chrome.tabs.query({active: true}, function(tabArray) {
var currentURL = tabArray[0].url; //http://facebook.com
var httpsURL = generateSSL(currentURL); //https://facebook.com
if(httpsURL == currentURL){
console.log(currentURL+" is already on HTTPS");
chrome.browserAction.setIcon({path:"../images/padlock_green.png"});
} else if(checkSSL(httpsURL)){
chrome.tabs.update(tabArray[0].id, {url: httpsURL});
chrome.browserAction.setIcon({path:"../images/padlock_green.png"});
chrome.browserAction.setBadgeText({text:"SSL"});
console.log("SSL found,"+currentURL+" redirected to"+httpsURL);
} else {
//donothing
console.log(currentURL+" has no SSL");
chrome.browserAction.setIcon({path:"../images/padlock_red.png"});
}
});
}
ajax 调用:
function checkSSL(url){
$.support.ajax = true;
$.ajax({
url: url,
type:'HEAD',
error: function()
{
return false;
},
success: function()
{
return true;
}
});
}
问题是,我在控制台中收到以下错误消息:
XMLHttpRequest cannot load https://www.facebook.com/. Origin chrome-extension://pgidanbjmliilmmohlphbagcapafjjpg is not allowed by Access-Control-Allow-Origin.
我不知道可能是什么问题:(
【问题讨论】:
-
好像您的扩展程序正在发出 Ajax 请求...
-
sry,我忘记复制 ajax 调用,我更新了我的帖子:/
-
但是 Ajax 调用是问题所在......你不能这样做,这就是错误消息所说的。此外,您不能从 Ajax 回调中返回值,整个设置将无法正常工作。您必须找到其他方法来测试 HTTPS 版本是否可用。
-
我明白了,那么如何判断一个url是否存在,并返回结果呢?
-
我们也可以查看您的
manifest.json文件吗?
标签: jquery google-chrome-extension