当API不允许访问控制 - 允许来源时怎么办
问题描述:
我对所有这些相同来源政策的事情都很疯狂。当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。
关于发生了什么的一些想法?
答
我奋斗了太长引起的两个项目的本地运行(角App和Web服务的Node.js)
看哪短期简单的解决方案的相互作用CORS问题:Chrome的插件AllowControlAllowOrigin。
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
刚刚从红色开关单选按钮为绿色,并没有更多的被禁止的请求,错误或警告! 我希望它能与你的API协同工作,当然这不是一个永久的解决方案,但这是一个很好的方法,可以避免在那些烦人的经常性问题上浪费时间。
尝试将'dataType'更改为'jsonp' - 我想在当前的例子中可以使用JSONP而不是CORS。 – vitozev
@unixarmy鉴于它正在返回XML我不认为JSONP会起作用。 –
啊,对不起,我没有注意到。你是对的! :) – vitozev