web-dev-qa-db-ja.com

クロスオリジンリクエストはHTTPでのみサポートされます

私はこのコードを実行しようとしています:

<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <title>Exemple 06</title>
</head>
<body>
    <!-- Diretiva ng-repeat -->
    <div ng-controller="MyController">
        <a ng-href="#/">Page 1</a> | <a ng-href="#/p2">Page 2</a>
        <div ng-view="#/p2"></div>
    </div>

    <script src="js/angular.js"></script>
    <script src="js/angular-route.js"></script>
    <script type="text/javascript">
        var myApp = angular.module('myApp', ['ngRoute']);

        myApp.config(function($routeProvider){
            $routeProvider
                .when('/'  , {controller: 'MyController', templateUrl: 'p1.html'})
                .when('/p2', {controller: 'MyController', templateUrl: 'p2.html'})
                .otherwise({ redirectTo: '/'});
        });

        myApp.controller('MyController', function($scope){
            $scope.nomes = [
                {id: 1, nome: 'Arthur'},
                {id: 2, nome: 'Portos'},
                {id: 3, nome: 'Aramis'}
            ];
        });
    </script>
</body>

ただし、以下のエラーが発生します。

XMLHttpRequestはfile:///home/93579551515/Desktop/Angular/p1.htmlを読み込めません。クロスオリジンリクエストはHTTPでのみサポートされます。

Webサーバーで実行したくありません。

10
Luciano Borges

p1.htmlp2.htmlなどのテンプレートをscriptタグ内に配置することで、 ドキュメントに記載 のようにindex.htmlに追加できます。

<script type="text/ng-template" id="p1.html">
  This is the content of the template
</script>

そうすれば、angularはそれらをフェッチするためにAJAXリクエストを行う必要がなくなります。

これらのscript要素はafterng-appの後に表示される必要があることに注意してください。

30
musically_ut

Chromeでも同じ問題が発生します。Chromeを使用している場合は、Chromeで同一生成元ポリシーを無効にできます。 Chromeの実行を開始します:

$ google-chrome --disable-web-security

これが 詳細 です。

1
JulienBrks

ルートプロバイダーはhttpプロトコルを使用するため、このコードをフォルダーから直接実行すると、クロスオリジンの問題が発生します。

localhost/routeのようなサーバーにフォルダーを保持し、実行します。

TemplateUrlのような参照パスを指定します: '/ p1.html'

0
Akhilesh Kumar