【发布时间】:2014-07-23 20:58:34
【问题描述】:
当浏览器在我的网页上时,我试图进行 ajax 调用,它运行良好,但一旦我离开我的域,它就会失败。这是一个封闭的系统,用户知道他们正在被跟踪,所以没有任何可疑的事情发生。我在域外的所有内容上都收到错误 406。例如,如果我在 www.mywebpage.com 的 URL 上,脚本可以完美执行,但是一旦我访问 www.yourwebpage.com,它就会返回错误。
我尝试将 manifest.json 中的权限设置为我的 URL、所有 url、特定 url,但它的行为方式相同。这是我的背景.js
chrome.runtime.onMessage.addListener
(
function(message, sender, sendResponse)
{
if(message.applicationcode=="VALIDAPPLICATIONKEY")
{
var salt=message.salt;
var learnerid=message.learnerid;
var behaviorkey=message.behaviorkey;
var behaviorname=message.behaviorname;
var behaviorkeyname=message.behaviorkeyname;
chrome.tabs.query
(
{active: true},
function(arrayOfTabs)
{
var data = new FormData();
data.append('Salt', salt);
data.append('LearnerID', learnerid);
data.append('BehaviorKey', behaviorkey);
data.append('BehaviorName', behaviorname);
data.append('BehaviorKeyName', behaviorkeyname);
data.append('BehaviorValue', arrayOfTabs[0].url);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://www.mywebpage.com/myservice.php', true);
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
// JSON.parse does not evaluate the attacker's scripts.
var resp = JSON.parse(xhr.responseText);
console.log(resp);
}
}
xhr.send(data);
}
);//end query
return true;
}
}
);//end listener
这是我当前的清单文件。
{
"manifest_version": 2,
"name": "Application",
"description": "Plugin",
"version": "1.0",
"background":
{
"scripts": ["jquery.js","background.js"],
"persistent": true
},
"permissions": [
"tabs","http://www.mywebpage.com/*","https://www.mywebpage.com/*"
],
"browser_action":
{
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_scripts":
[
{
"matches": ["<all_urls>"],
"js": ["jquery.js","popup.js"]
}
]
}
对此的任何想法或帮助将不胜感激。根据文档here,我正在尝试做的事情是被扩展允许的,并且以有限的方式工作。还是应该按照here 的建议在扩展页面中进行这种类型的操作?我是编写 Chrome 扩展程序的新手,我确信我错过了一些愚蠢的东西。
提前致谢。
【问题讨论】:
-
您的清单文件在这里至关重要。
-
出于兴趣,你为什么在
onMessage监听器中return true?它告诉 Chrome 期望sendResponse被异步调用,但它不会发生在你的 sn-p 中。 -
这是link 的推荐。我一直在寻找 Stack Overflow 的解决方案:)。如果不需要,请帮助我理解为什么与另一篇文章接受的回复相反。感谢您的疯狂快速响应!
-
从背景制作ajax而不是内容
-
ajax 请求来自后台。
标签: javascript php ajax google-chrome google-chrome-extension