Chrome扩展程序xmlhttprequest加载了错误的网址

时间:2017-08-19 15:06:27

标签: javascript google-chrome-extension xmlhttprequest

我正在编写chrome扩展,在我的扩展中,我有一个XMLHttpRequest,它从服务器获取JSON数据。然后我解析JSON数据以查找URL。

问题是我然后用我从解析的JSON数据中获取的URL调用XMLHttpRequest,但出于某种原因,我的URL有额外的信息。

以下错误是我在调用XMLHttpRequest时得到的:

GET chrome-extension:// kppcidkhcjeehdfhcaliekdbgpbkjahg /%22https://b.thumbs.redditmedia.com/BldqCmg1rCqffUDXXYjvO_CQ_58pYIfAGCuHY7dTBIw.jpg%22 net :: ERR_FILE_NOT_FOUND

我不明白为什么我的网址中有额外的信息。每当我将包含URL字符串的var输出到console.log时,它都会正确输出:https://b.thumbs.redditmedia.com/BldqCmg1rCqffUDXXYjvO_CQ_58pYIfAGCuHY7dTBIw.jpg

上面的URL就是我希望XMLHttpRequest执行GET请求,但似乎GET请求失败,因为它不是正确的URL。

当我对URL进行硬编码时,我的初始XMLHttpRequest正常工作,我测试了网址的硬编码:https://b.thumbs.redditmedia.com/BldqCmg1rCqffUDXXYjvO_CQ_58pYIfAGCuHY7dTBIw.jpg 这导致我的XMLHttpRequest工作正常。

我是否不允许对从远程服务器动态获取的URL执行GET请求?

1 个答案:

答案 0 :(得分:0)

错误网址中有2个%22个序列。这是双引号的编码。我认为带有url的变量包含一个用双引号括起来的字符串。执行GET请求时,它会对扩展的本地文件系统执行请求。因此请求chrome-extension://

诊断此类错误的一种方法是在console.log中包含您的url的变量的长度,并将其与应该的值进行比较:

var real_url = "https://b.thumbs.redditmedia.com/BldqCmg1rCqffUDXXYjvO_CQ_58pYIfAGCuHY7dTBIw.jpg";
console.log(real_url.length);
console.log(url.length);

或console.log字符串的第一个字符:

console.log(url.substr(0,1)); // is this a double quote?

尝试去除额外的引号或更改负责解析url的json数据的代码。