我对所有这些同源政策的事情感到疯狂。
当我尝试向Google Maps API发出请求时,我没有遇到任何问题:
var jsonData = $.ajax({
url:"http://maps.googleapis.com/maps/api/geocode/json?address=",
dataType:"json",
async:true,
success: function(json){...}
}
我认为这是因为Google Maps API允许Access-Control-Allow-Origin。但是当我尝试使用openls.geog.uni-heidelberg.de API时,我得到了跨源错误:
var xmlData = $.ajax({
type: "GET",
url:"http://openls.geog.uni-heidelberg.de/route?"
//dataType:"jsonp xml",
dataType: "xml",
async:true,
crossDomain : true,
success: function(xml){...}
}
请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost”访问。
有人认为我不明白的是,如果openls API不允许跨源,为什么可以直接从我的浏览器中输入请求,只需键入以下URL:
但是我不能用jquery来做。我也尝试了jsonp解决方案,但它不能与xml一起使用。
了解发生了什么?
答案 0 :(得分:3)
看看简单易用的解决方法:Chrome的插件AllowControlAllowOrigin。
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
只需将单选按钮从红色切换为绿色,不再阻止请求,错误或警告! 我希望它能与你的API一起使用,当然它不是一个永久性的解决方案,但这是避免在那些烦人的经常性问题上浪费时间的好方法。