请求的资源上不存在“Access-Control-Allow-Origin”标头

时间:2016-12-21 19:33:35

标签: spring google-maps spring-mvc google-maps-api-3 cors

我遇到跨域问题。我想对谷歌地图API执行一些请求但是我有这个错误“请求资源上没有'Access-Control-Allow-Origin'标题。因此不允许原点'http://localhost:8080'访问。” 。我知道这个问题有很多问题,但任何答案对我都有帮助。

我必须做(感谢谷歌地图API)一些请求,以获得位置和某个站之间的距离。这是一个Spring项目,我使用的是Spring MVC。

这是我的JS代码:

findShorterWay = function(){
    origin = document.getElementById('shorterWays').value;
    if(origin){
        for (var i = 0; i < stationNameArray.length; i++){
            $.ajax({
                url: 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins='+origin+'&destinations='+stationNameArray[i].lat+','+stationNameArray[i].lng+'&key=KEY',
                data: {
                    sensor: false,
                },
                success: function (data) {
                    console.log(data);
                   }
               });
           }
        }
    }

我使用IDEA功能来创建我的项目所以我没有使用maeven或者graddle。我不能使用jsonp而且我知道我必须改变一些东西来使用CORS并在我的服务器中更改一些东西(tomcat 8.5.5) )但我还没有真正理解它是如何工作的。如果有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

应在maps.googleapis.com上设置CORS标头。我担心你不能这样做,谷歌也不希望因某些原因加入它们。

如果您需要从浏览器客户端JavaScript代码执行距离矩阵计算,则必须使用Maps JavaScript API的客户端distance matrix service

否则,您必须从服务器端Java代码发送HTTP请求以避免此问题。