0

ポート 8000 で AngularJS アプリを提供する node.js サーバーと、ポート 80 で HTTP 経由で JSON としてデータを公開する Python サーバーがあります。

ブラウザに読み込むとhttp://localhost:8000/app/List.html空白のページが表示されます。なんで?

Controllers.js

function FooListCtrl($scope, $http) {
    $http.get('localhost/foo/list').success(function (data) {
        $scope.foo_lists = data;
    });
}

FooListCtrl.$inject = ['$scope', '$http'];

List.html

<!doctype html>
<html lang="en" ng-app>
    <head>
        <meta charset="utf-8">
        <script src="lib/angular/angular.js"></script>
        <script src="js/controllers.js"></script>
    </head>
    <body ng-controller="FooListCtrl">
        <code>{{foo_lists | json}}</code>
    </body>
</html>

curl -X GET localhost/foo/list -i

HTTP/1.0 200 OK
Date: Wed, 15 May 2013 18:28:49 GMT
Server: WSGIServer/0.1 Python/2.7.4
Content-Length: 30
Content-Type: application/json

{"Foo": ["bar", "can", "haz"]}
4

1 に答える 1

1

他の人が言及しているように、問題はクロスオリジンの問題である可能性が最も高いです。同じドメインを使用するだけでなく、同じポートを使用することも重要です。これを回避するには、まさにこの目的のために設計された非常に簡単なソリューションであるJSONP を使用するか、取得および投稿機能を提供しながらセキュリティを確保するために Cookie 検証およびその他の手段を使用するCross Site Request Forgery (XSRF) Protectionを使用できます (これは最も簡単な解決策ではありません)。

于 2013-05-15T20:36:35.583 に答える