我正在尝试加载位于维基百科上的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) {
}
});
});
怎么了?
答案 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从查询中,访问它,并直接传回响应(理想情况下根据收到的响应发送缓存标题,如果目标显示它可缓存一年,你的服务器也会这样说,如果目标说它可以缓存五分钟...)
这消除了技术问题,而不是法律问题 - 例如如果您没有保留资源上的相关许可证,那么您现在正在盗版。