将XHR从Chrome扩展程序发送到PHP页面时出错:仅支持HTTP的交叉原始请求

时间:2011-01-17 22:06:43

标签: javascript ajax google-chrome-extension xmlhttprequest

我想从Chrome扩展程序向PHP页面发送XHR(使用GET方法)。但是当我尝试运行代码时,出现错误:

    "Cross origin requests are only supported for HTTP"
    "XMLHttpRequest Exception 101"

当我直接在浏览器中调用它时,PHP页面加载正常,因此无法找到该文件不会导致错误。 由于这些错误,我无法将数据从扩展名发送到PHP页面以存储在数据库中。我在扩展名的manifest.json(在权限下)中包含了https:// * /,但它仍然没有工作

请告诉我如何克服此错误并成功发送请求。

PS:运行扩展程序并发送XHR的页面是一个HTTPS页面,而PHP是一个HTTP页面。这可能是问题的原因。如果是,如何克服这个问题。

3 个答案:

答案 0 :(得分:1)

我假设您在内容脚本中执行此操作,如果是这样,那么您不能。它将被视为相同的原产地政策。如果您想在Chrome扩展程序中使用XHR请求,请将其放在扩展程序页面(背景页面)中。

当你这样做时,请确保在允许的情况下添加正确的匹配模式:

http://code.google.com/chrome/extensions/match_patterns.html

例如,https://*/应为https://*/*,您的XHR应位于background page,您的内容脚本会通过messaging与其进行通信。

答案 1 :(得分:0)

我知道它有点老了,以防万一有人遇到这个页面。这是this question的副本。

如果您声明了适当的权限,则可以从内容脚本中创建cross-origin-xhr。

答案 2 :(得分:-1)

你做不到。 XHR受the same origin policy的约束。

但您可以使用JSONP代替。