2016-08-20 5 views
3

私はAPIを呼び出すときに問題が直面しているので、最初にアーキテクチャについて説明しましょう。以下のようなドメインでホストされている角度1.5、エラー時の応答ステータスは常に-1

全体のフォントエンドアプリケーションOSのAngularJSベース1.5、: app1.mydomain.com、app2.mydomain.com、appN.mydomain.com

私はAPI(Symfony2のベースを持っています - であるFOS休息):

api.mydomain.com

サーバーはnginxの、PHP5(FPM)、CORS開いています。私は今

var data = {someProperty: someValue}; 
    var $p = $resource($rootScope.apiDomain + '/some/endpoint', {}, { 
     get: { 
      method: 'GET' 
     } 
    }).get(data).$promise; 
    var request = $q.all({request: $p}); 

    return request 
     .then(function (response) { 
      // code on success 
     }, function (error) { 
      // code on error 
     }); 

のは、そのサーバーの応答が400のまたは500の場合、ResponseError(インターセプター)中のいずれかであるとしましょう:

Imは、いくつかのデータのためのAPIエンドポイントを呼び出す:

さて、問題を説明することができますバックエンドサーバから返送されたレスポンスコード

responseError: function (response) { 
    if (403 === response.status) { 
     // something on 403 
    } 
    // do something on other codes 
    return $q.reject(response); 
} 

どんなに状況 『の値「としてこのコードを取得するべきではありませんVEの』、responseオブジェクトこうした解決する方法はあり

  1. :だから

    ...

    Object {data: null, status: -1, config: Object, statusText: ""} 
    

    は、しかし...私はTHIS ANSERを見てきたし、これは私が今持っている何をすべきか、基本的には次が含まれ(私は、いずれの方法でも背面の&フロントの構成で完全な可能性を持っています)

  2. "解決できない"場合は、どうすればいいですか?
+0

これは、CORSの問題のように見えます。コンソールは何を言いますか?ネットワークパネルが応答について何を言いますか? –

+0

ええと、CORSです。フロントとバックエンドにCORSを設定してください。Googleの場合は情報がロードされますが、開始するには似たような質問があります。http://stackoverflow.com/questions/21455045/angularjs-http-cors-and-http-authentication – Chris

+0

ありがとう私が言ったように、基本的に私はCORSを次のように開いています:[pastebin](http:// pastebin。com/aMHye04D) @JBNizetコンソールが正しいResponseCode(つまり403) – kptLucek

答えて

0

うーん...

私はこの作業をするために最終的に管理している - nginx.opencorsが

ソリューション:configと

(前)

add_header 'Access-Control-Allow-Origin' "*";

をResponseObject:{data: Object, status: -1, config: Object, statusText: ""}

(後)

add_header 'Access-Control-Allow-Origin' "*" always;

ResponseObject:{data: Object, status: 403, config: Object, statusText: "Forbidden"}