无法使用sails js为谷歌地图地理位置设置CORS

时间:2015-03-09 15:47:17

标签: javascript angularjs cors sails.js

我很难在我的本地应用中尝试启用CORS。我一直在关注sails.js的文档,我所要做的就是更改此设置" allRoutes:true"启用角色。然后,当我尝试使用角色的谷歌API。

getLocation: function(val) {
    return $http.get('http://maps.googleapis.com/maps/api/geocode/json', {
        params: { address: val, sensor: false }
    });
}

我的Chrome控制台出现以下错误:
选项http://maps.googleapis.com/maps/api/geocode/json?address=an&sensor=false (index):1 XMLHttpRequest无法加载http://maps.googleapis.com/maps/api/geocode/json?address=ui&sensor=false。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:1337'因此不允许访问。响应的HTTP状态代码为405。

希望任何人都有解决方案。问候。

1 个答案:

答案 0 :(得分:1)

尝试在Chrome商店中安装此Chrome浏览器插件,并在选项中启用跨源资源共享。

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

<强> 编辑:

您的端点可能如下所示:

首先:

npm install request

然后:

config / routes.js 设置您的路线:

'get /location/:keyword': {
     controller: 'location',
     action: "getlocation"
},

然后在 api / controllers 中创建名为 LocationController.js

的控制器

在LocationController.js内部设置你的getlocation操作。

var request = require('request');
module.exports = {
    getLocation: function(req, res) {
        var keyword = req.param('keyword');
        var url = 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=' + keyword;
        request(url, function (error, response, body) {
            if (!error && response.statusCode === 200) {
                 res.jsonp({result : body});
            }
        });
    }
};

然后,您可以调用自己的终点,服务器将从google API返回JSON,绕过CORS问题。

GET:localhost:1337 / location / california

希望这有帮助。

理查德。