从Chrome扩展程序中的JavaScript调用网站API时出现跨域错误

Jos*_*arl 5 javascript google-chrome

我正在开发一个名为Remember the Milk API的小型Chrome扩展程序.谷歌有一个使用Flikr API 的好例子,我正在使用它作为我的扩展的基础.他们的示例在我的浏览器中完美运行(Linux上的最新Chrome).

但是当我换掉Remember the Milk API方法名称和API密钥时,我收到以下错误:

XMLHttpRequest cannot load http://api.rememberthemilk.com/services/rest/?method=rtm.test.echo&api_key=xxxxxxxxxxxxxxxxxxxxxx&name=Test%20task. 
Origin chrome-extension://lifnmciajdfhj is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

    var req = new XMLHttpRequest();
    req.open(
            "GET",
            "http://api.rememberthemilk.com/services/rest/?" +
            "method=rtm.test.echo&" +
            "api_key=xxxxxxxxxxxxxxxxxxxxxxxxxx&" +
            "name=Test%20task", 
            true);
    req.onload = onResponseReceived;
    req.send(null);

    function onResponseReceived() {
        console.log("It worked.");
    }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Jos*_*arl 9

并且......像往常一样,在这里发布的几分钟内解决了.问题是该manifest.json文件,该文件最初具有Flikr API权限.我已将它们更新为指向记住牛奶,但显然您需要卸载并重新安装扩展以重新注册权限.

谷歌有一个很好的教程,处理扩展中的XHR.

这是更新的manifest.json.也许它对其他人有帮助.

    {
        "name": "Remember the Milk",
        "version": "1.0",
        "description": "A Remember the Milk extension.",
        "browser_action": {
            "default_icon": "rtm.png",
            "popup": "popup.html"
        },
        "permissions": [
            "http://*.rememberthemilk.com/",
            "https://*.rememberthemilk.com/"
        ]
    }
Run Code Online (Sandbox Code Playgroud)