【问题标题】:Chrome Extension xmlhttprequest loading incorrect url [closed]Chrome扩展xmlhttprequest加载不正确的url [关闭]
【发布时间】:2017-08-19 23:24:29
【问题描述】:

我正在编写一个 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 有效,并且我已经测试了对 URL 的硬编码:https://b.thumbs.redditmedia.com/BldqCmg1rCqffUDXXYjvO_CQ_58pYIfAGCuHY7dTBIw.jpg 这导致我的 XMLHttpRequest 工作正常。

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

【问题讨论】:

  • edit 成为主题的问题:包括一个重复问题的minimal reproducible example。对于 Chrome 扩展程序或 Firefox WebExtensions,这几乎总是意味着包含您的 manifest.json 和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here?How to Ask
  • 从错误消息来看,您错误地使用了 chrome.runtime.getURL,它仅适用于扩展的内部文件。不要使用它。首次使用 API 方法之前,请务必查看文档。

标签: javascript google-chrome-extension xmlhttprequest


【解决方案1】:

错误的 url 中有 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 数据的代码。

【讨论】:

  • 是的,你是 100% 正确的。我所要做的就是删除双引号,它就起作用了。非常感谢!
猜你喜欢
  • 2019-02-12
  • 2016-04-20
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多