您好专家可以给我一个建议,为什么我在我的本地主机上运行的代码点火器上禁止这个403。
这个过程是这样的:
我正在使用ajax轻松,顺畅地访问和检索数据,从模型,控制器到视图,下面的图像是我对控制器的视图中的代码。
<div class="modal-header s-example-modal-sm" aria-labelledby="mySmallModalLabel">
× 新问题模式 function question_save(){
$.ajax({
url : "<?php echo base_url('Mainx/insert_question_header');?>",
crossDomain: true,
contentType: "application/x-www-form-urlencoded",
method: "POST",
data: { name: 'question_header'},
dataType: 'json',
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
success: function(data){
//alert('data save');
},
error: function (jqXHR, textStatus, errorThrown){
alert('Error adding');
}
});
}
问题标题:
最后从我的控制器中显示我在我的视图下输入的值。
public function insert_question_header(){
$insert_header = array(
'question_header'=> $this->input->post("question_header")
);
//$this->db->insert('tb_question_header', $insert_header);
echo json_encode($insert_header);
redirect('Mainx/question_form/success' );
}
答案 0 :(得分:2)
<script type="text/javascript">
function q_header() {
var question = document.getElementById('question').value;
$.ajax({
url: "<?php echo base_url('Mainx/insert_question_header');?>",
type: "post",
data: {'<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>',"question":question},
success: function(){
alert("success");
},
error:function(){
alert("failure");
}
});
}
</script>
我尝试使用这个代码而不是使用question_header我将其更改为问题。即使设置$ config [csrf_protection] = TRUE,这也可以工作;或$ config [csrf_generate] = TRUE; 这是我最新的答案。
答案 1 :(得分:0)
与Docs一样尝试使用Config
文件集
$config['csrf_regenerate'] = FALSE;
答案 2 :(得分:0)
试试这个:
$.ajax({
url : "<?php echo base_url('Mainx/insert_question_header');?>",
crossDomain: true,
contentType: "application/x-www-form-urlencoded",
method: "POST",
data: { name: 'question_header', '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>' },
dataType: 'json',
success: function(data){
//alert('data save');
},
error: function (jqXHR, textStatus, errorThrown){
alert('Error adding');
}
});
所以你必须将 CSRF令牌放到data:
部分。
答案 3 :(得分:0)
这里有几个问题。首先,您要发送一个带有“name”键和值“question_header”的参数,稍后您将通过其值而不是其名称来引用输入参数。这不会解决问题,但是第一个错误。
其次,在您的控制器方法中,您将显示一些JSON数据并在之后调用redirect
。此可能导致您的错误。如果您在此处推送重定向,则只会重定向AJAX调用,而不会重定向浏览器呈现的页面。
如果您希望重定向访问者,则必须通过输出包含重定向数据的有效JSON通知您的AJAX响应处理程序,然后解析该JSON响应并使用JavaScript重定向。