我试图使用以下代码访问gisgraphys api:
$('[id$=PlaceOfDeparture]:not(.ui-autocomplete-input)').live('focus', function() {
$(this).autocomplete({
source: function (request, response) {
$.ajax({
type: 'POST',
datatype: 'jsonp',
url: 'http://services.gisgraphy.com/fulltext/fulltextsearch?q='+ request.term,
//data: {
// q: request.term
//},
success: function(res) {
console.log("Success: " + res);
},
error: function(res) {
console.log("Error: " + res);
}
});
}
});
});
当我这样做时,我得到错误: XMLHttpRequest无法加载http://services.gisgraphy.com/fulltext/fulltextsearch?q=viborgsslingan。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' mylocalhost'因此不允许访问。 如果我按下链接我就像我想要的那样在浏览器中获取xml。不知怎的,它不会得到我的代码。我已经搜索了一下这个问题,但它似乎是gisgraphy服务器上的一个安全问题......我能做些什么来使这个跨域访问工作吗?
答案 0 :(得分:1)
我已经对这个问题进行了一些搜索,但它似乎是gisgraphy服务器上的一个安全问题......
这不是安全问题,而是另一种方式。 Same Origin Policy禁止您通过AJAX,从JS中的其他域请求数据,除非远程域发出信号表明它希望显式授予您访问(这称为CORS)。
如果您正在访问的服务不提供该服务,并且没有其他格式不受SOP限制 - 例如f.e. JSONP - 然后你无法通过JavaScript获取客户端数据。