2

API を使用する Angular を使用して単純なアプリを作成しようとしています。私は VM を使用してコードを実行しており、自分のコンピューターでそれにアクセスしているため、自分のマシンから API を呼び出すには、cURL またはその他の HTTP クライアントを使用でき、すべてが機能します。例:

curl -k --user damien@email.com:パスワードhttps://api.my.domain.com/v1/traveler/get

たとえば、旅行者のリストが返されます。証明書が無効であるため、証明書を「信頼」する必要があります。したがって、ブラウザでは最初は呼び出しが返さnet::ERR_INSECURE_RESPONSEれるため、API URL に移動して例外を追加するだけで、この問題はもうありません。次に、基本認証を追加する必要がありましたが、機能しているようです。私のコードが何であるかを見てみましょう。何か問題がある場合はお知らせください。外部 API を使用するこのチュートリアルに従っています: http://www.toptal.com/angular-js/a-step-by-step -初めてのangularjsアプリへのガイド

app.js:

angular.module('TravelerApp', [
    'TravelerApp.controllers',
    'TravelerApp.services'
]);

services.js:

angular.module('TravelerApp.services', [])
.factory('TravelerAPIService', function($http) {
    var travelerAPI = {};

    $http.defaults.headers.common.Authorization = 'Basic ABC743HFEd...=';

    travelerAPI.getTravelers = function() {
        return $http({
            method: 'GET',
            url: 'https://api.my.domain.com/v1/traveler/get'
        });
    }

    return travelerAPI;
});

最後に、controllers.js:

angular.module('TravelerApp.controllers', [])
.controller('travelersController', function($scope, TravelerAPIService) {
    $scope.travelersList = [];

    TravelerAPIService.getTravelers()
    .success(function(data) {
        console.log('SUCCESS');
        $scope.travelersList = data;
    })
    .error(function(data, status) {
        console.log('ERROR');
        $scope.data = data || "Request failed";
        $scope.status = status;
    });
});

エラー ステータス コードは 0 で、エラー データは空の文字列です。

4

2 に答える 2

4

精度:

HTTP POST クエリでも同じ動作をします。確信してます :

  • サーバー上でリクエストが行われていません
  • クエリを送信しなかったのは角度です

そして最後に私は答えを見つけます:

私(そしておそらくあなた)は、自己署名のhttpsサーバーで送信しているためです。Chromeは安全ではないというフラグを立てます。

この問題を解決するには、ブラウザーにアドレスを入力し、証明書を手動で受け入れます。

おそらく関連:自己署名証明書を使用した HTTPS URL への XMLHttpRequest

于 2014-05-06T11:39:32.170 に答える
1

ほとんどのブラウザーは Google Chrome、Firefox などの自己署名証明書を受け入れないため、問題を解決する自己署名証明書ではなく、信頼できる CA 署名付き SSL 証明書を使用することをお勧めします。

于 2018-01-12T05:14:12.467 に答える