我正在编写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请求?
答案 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数据的代码。