0

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

    }
  });
});

怎么了?

4

2 回答 2

1

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

于 2012-09-02T23:29:39.300 回答
1

这是为了减少一些安全风险。如果资源所在的服务器这么说(坦率地说,就安全方面而言,这有点倒退,但我没有t设计机制,所以不要怪我)。

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

这消除了技术问题,而不是法律问题 - 例如,如果您不遵守资源的相关许可,那么您现在就是盗版。

于 2012-09-03T00:42:09.227 回答