无法通过$ .ajax加载远程XML文件

时间:2012-09-02 23:28:04

标签: jquery ajax wikipedia

我正在尝试加载位于维基百科上的xml文件,但我在浏览器控制台中收到此错误:

XMLHttpRequest cannot load (file url here) Origin http://localhost is not allowed by Access-Control-Allow-Origin.

代码:

jQuery(document).ready(function(){
  jQuery.ajax({
    type: 'GET',
    url: 'http://upload.wikimedia.org/some_file.svg',
    dataType: 'xml',
    success: function(xml) {

    }
  });
});

怎么了?

2 个答案:

答案 0 :(得分:1)

由于错误不清楚,您无法使用AJAX读取其他域中的内容。

答案 1 :(得分:1)

这是为了减少一些安全风险。资源只能从XMLHttpRequest(其中jquery的ajax使用与其他ajax方法相同)来使用,如果资源所在的服务器这样说的话(就安全方面而言,坦率地说有点倒退,但我没有'设计机制,所以不要怪我。)

最灵活的方法是绕过这个来在你自己的服务器上使用传递,所以你点击http://localhost/passThrough/?uri=http%3A%2F%2Fupload.wikimedia.org%2Fsome_file.svg和你的处理程序(在ASP.NET,PHP或其他)然后得到uri从查询中,访问它,并直接传回响应(理想情况下根据收到的响应发送缓存标题,如果目标显示它可缓存一年,你的服务器也会这样说,如果目标说它可以缓存五分钟...)

这消除了技术问题,而不是法律问题 - 例如如果您没有保留资源上的相关许可证,那么您现在正在盗版。