获得No' Access-Control-Allow-Origin' Angular 2

时间:2017-12-22 20:57:58

标签: angular ionic2 cors google-distancematrix-api

特别是我正在向距离矩阵google api做一个get请求,但是得到了No No' Access-Control-Allow-Origin'。

this.http.get(googleApiurl).map(response => response.json()).subscribe(
    //Code here
);

由于此标头是响应标头而非请求标头,因此我尝试了:

In constructor->private res: ResponseOptions
this.res.headers.append('Access-Control-Allow-Origin','*');
你能帮我吗?

1 个答案:

答案 0 :(得分:0)

我建议您从服务器请求Google API。但是,如果您不想设置服务器,则有一些解决方法。

解决方案1:

我遇到了同样的问题,并通过使用PlacesService来获取PlaceID

来修复它
// Get Place ID from Address 
function getPlaceIDFromAddress(address, callback){
          var place = {};
          var request = {
            location: new google.maps.LatLng(myLat, myLng),
            radius: '50',
            query: address
          };
          var service = new google.maps.places.PlacesService($scope.mapContainer);
          service.textSearch(request, function(results, status){
             if (status == google.maps.places.PlacesServiceStatus.OK) {     
                    var placeId = results[0].place_id;
                    var location = results[0].geometry.location;                    
                return callback(null, placeId);
              }
          });
    }

然后将PlaceID传递给地理编码器以获取LatLng,或者您可以将LatLng传递给GeoCode以获取地址。

(new google.maps.Geocoder()).geocode({placeId: places_id}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
     console.log("Address: ", results[0].formatted_address);
}});

解决方案2:

不推荐。

如果您只想在本地主机上进行测试,可以安装this chrome扩展程序。只需在调用matrix api

之前打开它

此扩展程序将在标题中插入“Access-Control-Allow-Origin”。