我正在 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。
第三,我将提供我的请求信息:
PUT http://pimtest.php/Yii/trackstar/contentManagement/api/SidebarWidgetsUsed/
403 Forbidden
38ms
我认为这个 url 之后需要一个 id,但是当我在数据中提供一个 id 应该足以让骨干网识别它是关于 PUT 请求/更新请求时。
我不知道在哪里可以进一步查看我的代码。我知道这是一个复杂的故事,所以任何最小的建议都会受到赞赏!
问候,