0

私はこの本を使ってAngularJSを学び、Angular、Node、DeploydでこのWebアプリケーションを構築しています。今、私のアプリは 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") に送信することです。ここでは、たとえば node-http-proxy ( https://github.com/nodejitsu/node-http-proxy )を使用して、それらを localhost:5500 に簡単にプロキシできます。

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' });
});

これが現在のノードサーバーに干渉している可能性があります(最初にクライアント側のAngularコードを提供しています)。これに Express を使用している場合は、「http」と「http-proxy」を次のように組み合わせることができます: https://stackoverflow.com/a/22244101/3651406

于 2014-08-04T16:35:55.287 に答える