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

Jquery 无法通过$.ajax加载远程XML文件,jquery,ajax,wikipedia,Jquery,Ajax,Wikipedia,我试图加载位于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://uploa

我试图加载位于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) {

    }
  });
});

怎么了?

正如错误不明确地说的,您不能使用AJAX从另一个域读取内容。

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

最灵活的方法是绕过这个问题,在您自己的服务器上使用pass-through,因此您可以点击
http://localhost/passThrough/?uri=http%3A%2F%2Fupload.wikimedia.org%2Fsome_file.svg
然后,您的处理程序(在ASP.NET、PHP或其他任何版本中)从查询中获取uri,访问它,并直接将响应返回(理想情况下,根据接收到的缓存头发送缓存头,因此,如果目标表示可以缓存一年,您的服务器也会这样说,如果目标表示可以缓存五分钟……)

这将消除技术问题,而不是法律问题-例如,如果您不遵守资源的相关许可证,您现在正在进行盗版。

这可能会为事件提供详细信息
:)
请参阅和