我知道这个论坛已经回答了类似的问题。我已经尝试了stackoverflow中提供的许多解决方案来解决该问题,但仍无法解决。因此,期待您的专业意见。
我正在尝试使用Cakephp 3通过ajax调用对表单提交的AjaxController函数进行调用。这里的问题是我收到403错误。我尚未找到解决方法。我可以看到表单正在传递值,但是Ajax调用无法到达控制器功能。我收到以下错误
POST http://localhost/shoppingCart/ajax/ajaxTest 403(禁止访问)
AjaxController:
public function ajaxTest(){
$result = "hello";
return $result;
}
script:(view.ctp of AjaxController)
$(document).ready(function(){
$('button').click(function(event){
var form_data = $(this).serialize();
var hidden_value = $('[name="id"]').val();
// alert("your form data "+hidden_value);//works fine here
event.preventDefault();
$.ajax({
url:'../ajaxTest',
type:'POST',
data : hidden_value,
success:function(result){
alert('success');
$("#result").text(result);
},
error:function(error){
alert('error ='+(error.Message));
}
});
});
});
// });
</script>
答案 0 :(得分:0)
根据Cakephp:
如果身份验证器返回null,则AuthComponent会将用户重定向到 登录操作。如果是AJAX请求,并且配置ajaxLogin为 指定要呈现的元素,否则为403 HTTP状态代码 返回。
我认为您没有指定任何授权方案。那就是为什么根据cakephp却出现403错误。
如果您不使用授权方案,请务必检查 在控制器的beforeFilter中授权自己或使用 另一个组件。
您可以使用以下方法将操作公开(在beforeFilter或初始化中):
// Allow all actions
$this->Auth->allow();
// Allow only the index action.
$this->Auth->allow('ajaxTest');
// Allow only the view and index actions.
$this->Auth->allow(['ajaxTest', 'index']);
CakePhp > Authentication > Handling Unauthenticated Requests