我对所有这些相同来源政策的事情都很疯狂。当API不允许访问控制 - 允许来源时怎么办
当我尝试做了谷歌地图API的请求我没有问题:
var jsonData = $.ajax({
url:"http://maps.googleapis.com/maps/api/geocode/json?address=",
dataType:"json",
async:true,
success: function(json){...}
}
我认为,这是因为谷歌地图API允许访问控制允许来源。但是,当我尝试使用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){...}
}
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost ' is therefore not allowed access.
人认为我不明白的是,如果openls API不允许跨-origin为什么可以直接从我的浏览器做请求刚刚键入URL,如:
但我可以使用jQuery无法做到。我也尝试过jsonp解决方案,但它不适用于xml。
关于发生了什么的一些想法?
尝试将'dataType'更改为'jsonp' - 我想在当前的例子中可以使用JSONP而不是CORS。 – vitozev
@unixarmy鉴于它正在返回XML我不认为JSONP会起作用。 –
啊,对不起,我没有注意到。你是对的! :) – vitozev