0

我正在使用这本书来学习 AngularJS,我在其中使用 Angular、Node、Deployd 构建了这个 webapp。现在,我的应用程序停留在 localhost:5000/app.html,5000 是节点 Web 服务器监听的端口。我尝试检索以这种方式部署的存储数据:

$http.get("localhost:5500/products")
    .success(function (data) {
        $scope.data.products = data;
    })
    .error(function (error) {
        $scope.data.error = error;
    });

但这会导致错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。我该如何解决这个问题?谢谢 :)

4

1 回答 1

3

凯文 B 是对的。这是阻止您的请求的同源策略。

您应该在这里做的是将您的请求从客户端定向到您的节点服务器(“/products”)。在这里,您可以轻松地将它们代理到 localhost:5500,例如使用 node-http-proxy ( https://github.com/nodejitsu/node-http-proxy )。

从 node-http-proxy README.md (将主机/端口改编为您的用例):

var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer(options);
require('http').createServer(function(req, res) {
  proxy.web(req, res, { target: 'http://localhost:5500' });
});

这可能会干扰您当前的节点服务器(首先为您提供客户端角度代码)。如果您为此使用 Express,您可以像这样组合“http”和“http-proxy”:https ://stackoverflow.com/a/22244101/3651406

于 2014-08-04T16:35:55.287 回答