0

デモ: http://jsfiddle.net/rob_balfre/7QUUf/

$resource を使用して (ドメイン間で) データをどのように POST しますか?

たとえば、次の curl は問題なく API に書き込みます。

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"name": "Wobbly"}' http://192.168.91.20/api/food/

ヘッダーの応答は次のとおりです。

HTTP/1.0 201 CREATED
Date: Thu, 25 Oct 2012 08:19:42 GMT
Server: WSGIServer/0.1 Python/2.6.1
Access-Control-Allow-Headers: Content-Type,*
Location: http://localhost/api/food/15/
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE
Content-Type: text/html; charset=utf-8

同じ方法でPOSTする角度を取得する方法に完全に行き詰まっています。これは私の $resource です。'get' が問題なく機能することに注意してください。

angular.module('tastypieModule', ['ngResource']).
factory('FoodOptions', function($resource, $timeout) {
   var FoodOptions = $resource('http://testurl/api/:type',
        {type: 'food'},
        {
            get: {method: 'JSONP', params: {format: 'jsonp', callback:'JSON_CALLBACK'}},
            update: {method: 'POST', headers: {'Content-Type': 'application/json'}}
        }
    );

 return FoodOptions;
})

更新を呼び出すと、失敗するだけで、これがコンソールのネットワーク タブであることがわかります。

METHOD: OPTIONS 
STATUS: (canceled) Load cancelled
4

1 に答える 1

1

サーバーでは、クロス オリジン リソース共有を実装する必要があります。http://www.html5rocks.com/en/tutorials/cors/http://omarrr.com/cors-html5-approach-to-crossdomain-policies/の両方に、このトピックに関する優れた記事があります。HEAD リクエストはブラウザからサーバーに送信され、CORS 権限を含む (または、この場合は含まない) ヘッダーをチェックします。サーバーに CORS を実装すると、ブラウザが最初にサーバーに対して HEAD リクエストを 1 回行い、正しい権限を確認した後、POST を行うことがわかります。

于 2012-10-24T18:05:40.293 に答える