2016-12-03 12 views
0

私のIonicアプリケーションでは、簡単なHTTPリクエストを作成できるAPIを使用しています。私のAPIでは、server.jsに以下を追加してCORSを有効にしました:PUT/DELETE要求のためのIonicでのCORSの有効化

//ENABlE CORS 
app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

私のGETとPOSTリクエストはうまくいきます。しかし、私のPUT要求は、エラー "メソッドPUTは、プリフライト応答でアクセス制御許可メソッドによって許可されていません。"を返します。 PUT/DELETEのためにこの問題を具体的に修正するにはどうすればよいですか? controller.jsで

PUT要求

var link = 'https://cs496-app3.herokuapp.com/api/person/'; 
    var obj = { 
    'name' : $scope.data.name, 
    'email_address': $scope.data.email, 
    'location' : $scope.data.location 
    }; 

    var ls = UserProfile.getAll(); 
    console.log(ls); 
    var curProfile = ls[0]; 
    var prevName = curProfile.name; 

    $http.put(link + prevName, JSON.stringify(obj)).then(function (res){ 
     alert("Successfully updated your account information") 
     console.log("put successful"); 
     $state.transitionTo('tab.profile'); 

    }); 

答えて

0

次のようにserver.jsであなたのCORSの設定を変更してみてください。

//ENABlE CORS 
 
app.use(function(req, res, next) { 
 
    res.header("Access-Control-Allow-Origin", "*"); 
 
    res.header("Access-Control-Allow-Methods","GET, POST, OPTIONS, PUT"); 
 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
 
    next(); 
 
});

0

その後、

var express = require('express'); 
var cors = require('cors'); 

var app = express(); 
app.use(cors()); 

これは、すべてのCORSの問題を処理する、npm install corsをインストールしてみてください。

+0

Node.jsではなくAngularJSアプリケーションです。 – lin

+0

私のモバイルアプリはAngularアプリですが、私のAPIはノード – user2466886

+0

で構築されています。私はクロムがサーバー応答によって許可されるべきである非常に単純なhttpコールではないすべてに対してプリフライト要求を送ると信じています。ノードで提案したコードを試してみてください。役立つかもしれません。ノードのCorsを有効にすると、プリフライトが簡単に処理されます。 – rgk

関連する問題