我正在尝试在chrome中发送httpget请求但是我收到此错误 资源必须列在web_accessible_resources清单密钥
中这是我的按钮代码
contentInput.onclick = function(){
var assetid = $('.thumbnail-span').attr("data-3d-url")
var baseurl = 'http://www.roblox.com'
var xhr = new XMLHttpRequest();
xhr.open("GET", chrome.extension.getURL(baseurl + assetid), true);
var result = xhr.responseText;
xhr.send();
console.log(result)
chrome.extension.sendRequest({
action: "EditContent",
type: assetType,
name: assetName,
content: contentData
})
和我的清单文件
{
"name": "ROBLOX Object Downloader .obj",
"short_name": "OBJDownloader",
"description": "Allows you to quickly download assets from the browser as a .obj ",
"version": "1.0.0",
"icons": {"128":"icon.png"},
"permissions": [
"http://*.roblox.com/*",
"http://*.rbxcdn.com/*",
"downloads",
"downloads.open"
],
"background": {"scripts":["background.js"]},
"content_scripts": [
{
"matches": ["http://*.roblox.com/*-item?id=*"],
"js": ["item.js","jquery.js"]
},
{
"matches": ["http://*.roblox.com/*ser.aspx*"],
"js": ["user.js","jquery.js"]
},
{
"matches": ["http://*.roblox.com/*atalog/*"],
"js": ["cataloginsert.js","jquery.js"]
}
],
"manifest_version": 2
}
答案 0 :(得分:5)
chrome.extension.getURL
函数用于从位于扩展程序目录内的您自己的计算机获取文件:
string chrome.extension.getURL(string path)
:将扩展安装目录中的相对路径转换为完全限定的URL。
这意味着您的Ajax请求正在尝试访问类似
的网址chrome-extension://aaaaaabbbbbccccccdddddd/http://www.roblox.com/some-asset-id
要通过chrome-extension://
访问文件,您必须通过web_accessible_resource
清单字段明确访问网页。
但是,您可能只想获取网址http://www.roblox.com/some-asset-id
。如果getURL
完全不合适。只需执行以下操作:
xhr.open("GET", baseurl + assetid, true);
您的代码有一个附加问题,即它不会等待异步Ajax调用完成。您应该等待load
事件,然后阅读responseText
:
contentInput.onclick = function(){
...
var xhr = new XMLHttpRequest();
xhr.open("GET", chrome.extension.getURL(baseurl + assetid), true);
xhr.addEventListener("load", function() {
var result = xhr.responseText;
console.log(result);
doSomethingElseWith(result);
// all uses of `result` must be inside this function
});
xhr.send();
...