我很难在我的本地应用中尝试启用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。
希望任何人都有解决方案。问候。
答案 0 :(得分:1)
尝试在Chrome商店中安装此Chrome浏览器插件,并在选项中启用跨源资源共享。
<强> 编辑: 强>
您的端点可能如下所示:
首先:
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
希望这有帮助。
理查德。