私は Yii で REST を使用しています。したがって、yiirestful プラグインと Backbone.JS を使用します。現時点では、REST 全体で POST および GET リクエストを完全に実行できます。しかし、レコードを更新しようとすると、常に 403 禁止エラーが発生します。私が試したことと方法を説明します:
まず、コレクションを次のように Backbone に保存しています。
Backbone.sync('update', this.collection);
これが機能するかどうかはわかりませんが、実際には、PUT リクエストはすべて 403 になります。
次に、モジュールで作業しているため、URLmanager ルールを次のように調整しました。
'contentManagement/api/<controller:\w+>'=>array('contentManagement/<controller>/restList', 'verb'=>'GET'),
'api/<controller:\w+>'=>array('<controller>/restList', 'verb'=>'GET'),
'api/<controller:\w+>/<id:\w+>'=>array('<controller>/restView', 'verb'=>'GET'),
'api/<controller:\w+>/<id:\w+>/<var:\w+>'=>array('<controller>/restView', 'verb'=>'GET'),
array('contentManagement/<controller>/restCreate', 'pattern'=>'contentManagement/api/<controller:\w+>', 'verb'=>'POST'),
array('<controller>/restUpdate', 'pattern'=>'contentManagement/api/<controller:\w+>/<id:\d+>', 'verb'=>'PUT'),
array('<controller>/restUpdate', 'pattern'=>'contentManagement/api/<controller:\w+>/<id:\d+>', 'verb'=>'PUT'),
array('<controller>/restDelete', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'DELETE'),
array('<controller>/restCreate', 'pattern'=>'contentManagement/api/<controller:\w+>', 'verb'=>'POST'),
array('<controller>/restCreate', 'pattern'=>'contentManagement/api/<controller:\w+>/<id:\w+>', 'verb'=>'POST'),
これが問題を引き起こす場合があります。しかし、私はこのルールをあまり掘り下げていません.. POSTリクエストで行ったのと同じことをしましたが、何を試しても403が返されます.
3 番目に、リクエスト情報を提供します。
PUT http://pimtest.php/Yii/trackstar/contentManagement/api/SidebarWidgetsUsed/
403 Forbidden
38ms
このURLの後にIDが必要だと思いますが、データにIDを指定すると、バックボーンがPUTリクエスト/更新リクエストについて認識できるようにするのに十分なはずです。
コードのどこを調べればよいかわかりません。複雑な話だと理解していますので、最小限のアドバイスをいただければ幸いです。
グリーツ、