起源不被Access-Control-Allow-Origin允许?

3

我正在尝试使用XHR在Chrome扩展程序中从Yahoo获取天气信息:

$.ajax({
    url: "https://weather.yahooapis.com/forecastrss?w=" + 250226 + "&u=c",
    dataType: 'xml',
    success: function(data) {
        console.log(data);
    }
});

我已经使用这个脚本请求了跨域权限:

$("button").click(function(){
    chrome.permissions.request({
        origins: ['*://weather.yahooapis.com/*']
    }, function(granted) {
        if (granted) {
            console.log("Success creating permission.");   //successful
    } else {
            console.log("Not successful.");
    }
});

不过,它仍然给我一个错误提示:

XMLHttpRequest无法加载http://weather.yahooapis.com/forecastrss?w=2502265&u=c。 来源chrome-extension:// randomid未被Access-Control-Allow-Origin允许。

enter image description here

我想不出任何原因为什么会发生这种情况。有什么建议吗?


我不是很擅长网站开发,但是文档似乎没有明确指出通配符是否可行。 - ta.speot.is
@ta.speot.is - http://developer.chrome.com/extensions/declare_permissions.html - Derek 朕會功夫
我可能无法做出其他贡献了(不是一个Web开发人员之类的),但文件说明“匹配模式”似乎是针对权限而不是 来源 - ta.speot.is
@ta.speot.is - "匹配模式" 是针对 origins 的,因为只有权限列表可以放在 permissions 中。即使我删除了 *,它仍然无法工作。 :( - Derek 朕會功夫
考虑到谷歌提供的这个示例扩展,你能试试 http://weather.yahooapis.com/(不带 *)吗? - Passerby
@Passerby - 你的链接真的帮了我很多... 我尝试使用 chrome.permissions.contains 来查看我是否实际上拥有该权限,但它返回了 false。在仔细检查我的代码后,我发现我已经忘记在我已经拥有的不同权限之间放置 "。我真是太傻了。现在它可以正常工作了。 - Derek 朕會功夫
1个回答

0
你的Chrome扩展是否有清单文件?看起来这可能是问题所在,你还应该在那里设置跨域权限。
似乎随机ID提到的与扩展程序没有被分配正确的扩展ID有关。

嗨joseeight,感谢您的回答,但我已经找到问题所在了...我在上面的评论部分提到了它。此外,“random_id”只是我放置的占位符,以便问题中不会出现奇怪的字符。 - Derek 朕會功夫

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接