没有 'Access-Control-Allow-Origin' Angular 2
Getting No 'Access-Control-Allow-Origin' Angular 2
具体来说,我正在对距离矩阵 google api 发出获取请求,但得到的是 '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','*');
你能帮我吗?
我建议您从您的服务器请求 Google API。但是,如果您不想设置服务器,则有一些解决方法。
解决方案一:
我遇到了同样的问题并通过使用 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);
}});
方案二:
虽然不推荐。
如果您只想在您的本地主机上进行测试,您可以安装 this chrome 扩展。在调用矩阵 api
之前打开它
此扩展将在 header 中插入 'Access-Control-Allow-Origin'。
具体来说,我正在对距离矩阵 google api 发出获取请求,但得到的是 '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','*');
你能帮我吗?
我建议您从您的服务器请求 Google API。但是,如果您不想设置服务器,则有一些解决方法。
解决方案一:
我遇到了同样的问题并通过使用 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);
}});
方案二:
虽然不推荐。
如果您只想在您的本地主机上进行测试,您可以安装 this chrome 扩展。在调用矩阵 api
之前打开它此扩展将在 header 中插入 'Access-Control-Allow-Origin'。