访问gisgraphy api时没有'Access-Control-Allow-Origin'

时间:2014-03-12 09:02:57

标签: ajax api post request cross-domain

我试图使用以下代码访问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服务器上的一个安全问题......我能做些什么来使这个跨域访问工作吗?

1 个答案:

答案 0 :(得分:1)

  

我已经对这个问题进行了一些搜索,但它似乎是gisgraphy服务器上的一个安全问题......

这不是安全问题,而是另一种方式。 Same Origin Policy禁止您通过AJAX,从JS中的其他域请求数据,除非远程域发出信号表明它希望显式授予您访问(这称为CORS)。

如果您正在访问的服务不提供该服务,并且没有其他格式不受SOP限制 - 例如f.e. JSONP - 然后你无法通过JavaScript获取客户端数据。