当我使用 jQuery ajax
或 XMLHttpRequest
在 background.js 中发送请求时,出现错误:
background.js:51 GET chrome-extension://kameliefngmopmegikbnifbclhkihkjm/http%3A%2F%2Fhtcjy.com%2Fmobile%2Fshop%2Fm%2Fg%2Fgoods-1.do%3F net::ERR_FILE_NOT_FOUND
为什么要在我的请求网址前添加extension://kameliefngmopmegikbnifbclhkihkjm/
?
对于该错误我该怎么办。
这是我的代码:
background.js
chrome.webRequest.onBeforeRequest.addListener(function(details) {
chrome.tabs.query({active:true},function(tab){
var method = "get";//details.method;
var actualUrl = "http%3A%2F%2Fhtcjy.com%2Fmobile%2Fshop%2Fm%2Fg%2Fgoods-1.do%3F"; //details.url;
sendCrossOrigin(actualUrl, method, function(responseText){
console.log(responseText);
})
});
}, {urls: ["*://*/mock/requestOnServer.do?*"]}, ["blocking"] );
function sendCrossOrigin(url, type, success){
var xhr = new XMLHttpRequest();
xhr.open(type, url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// innerText does not let the attacker inject HTML elements.
//documemt.getElementById("resp").innerText = xhr.responseText;
//var resp = JSON.parse(xhr.responseText);
success(xhr.responseText);
}
}
xhr.send();
}
list .json
{
"name": "RAP",
"version": "0.1",
"manifest_version": 2,
"description": "RAP Chrome Plugin for Cross-domain",
"browser_action": {
"default_icon": "icon.png",
"default_title": "RAP",
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"*://htcjy.com/*",
"*://*/*",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["jquery-2.0.0.min.js", "background.js"]
},
"content_scripts":[{
"matches":["http://*/*"],
"js":["jquery-2.0.0.min.js", "content_script.js"]
}]
}
最佳答案
我已经解决了。
这是因为我发布的网址类似于 http%3A%2F%2Fhtcjy.com%2Fmobile%2Fshop%2Fm%2Fg%2Fgoods-1.do%3F
但是我写
"permissions": [
"tabs",
"*://htcjy.com/*",
"*://*/*",
"webRequest",
"webRequestBlocking"
]
它无法匹配url,所以我调用函数decodeURIComponent
来转换为urlhttp://htcjy.com/mobile/shop/m/g/goods-1。做什么?
我真是太蠢了
关于javascript - XMLHttpRequest: "chrome-extension://"前置到 URL 获取错误: net::ERR_FILE_NOT_FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032189/