Javascript 在node.js/angular app中查询来自不同主机的数据时,如何遵守访问控制源异常?
有一个网页,它将任何ip号码解析为国家名称,我所要做的就是给它一个参数,例如Javascript 在node.js/angular app中查询来自不同主机的数据时,如何遵守访问控制源异常?,javascript,angularjs,node.js,geolocation,Javascript,Angularjs,Node.js,Geolocation,有一个网页,它将任何ip号码解析为国家名称,我所要做的就是给它一个参数,例如http://ip2c.org/10.0.1.3(我知道这是我的本地主机,只是为了测试)。当我在浏览器中运行它时,我看到1;ZZ;ZZZ;保留的很好,我知道这不是一个可以反向地理标记的Ip地址。但我希望在node.js/angular应用程序中也能得到类似的结果 到目前为止,我在后端代码中创建了一个函数: app.get('/get/ip/address', function (req, res) { var i
http://ip2c.org/10.0.1.3
(我知道这是我的本地主机,只是为了测试)。当我在浏览器中运行它时,我看到1;ZZ;ZZZ;保留的
很好,我知道这不是一个可以反向地理标记的Ip地址。但我希望在node.js/angular应用程序中也能得到类似的结果
到目前为止,我在后端代码中创建了一个函数:
app.get('/get/ip/address', function (req, res) {
var ip = require('ip');
res.json(ip.address());
})
在我的前端查询控制器中:
$scope.countryName = function() {
$http.get('/get/ip/address').success(function (data) {
console.log(data);
console.log("!!!!!");
$http.get('http://ip2c.org/'+data).success(function (data) {
console.log(data);
})
})
}
当我运行它时,我看到:
queryCtrl.js:12710.0.1.3 queryCtrl.js:128!!!!!网页.html:1
无法加载XMLHttpRequest。不
“Access Control Allow Origin”标头出现在请求的服务器上
资源。因此,不允许使用源“”
通路
如何遵守它并在控制台中看到正确的结果?由服务器决定哪些浏览器可以查询它,以及是否允许跨源请求。客户端角度代码无法以任何方式更改/修复该问题。如果服务器不允许来自浏览器的跨源请求,那么浏览器就无法发出该跨源请求 您可以做的是将功能移动到服务器上。下面是序列的工作方式:
- 客户端查询您的服务器,询问国家/地区李>
- 服务器从该请求中获取客户端IP地址李>
- 然后,您的服务器向ip2c.org URL发出请求以获取国家/地区李>
- 然后,服务器将该国家/地区返回给客户端
由于服务器不受跨源限制(这只是浏览器的问题),您可以让服务器代表您提出跨源请求。非常感谢!您能告诉我如何修改服务器端代码以执行对ip2c.org的调用吗?@user3766930-只需查看nodejs的
request()
模块。它向您展示了如何向其他服务器发出http请求。