嗨,专家们,你能给我一个建议吗?为什么我的代码点火器目前在本地主机上运行,却禁止使用这个403。
403禁止
过程如下:
-
我使用ajax来轻松、顺利地访问和检索从模型、控制器到视图的数据。下图是我在视图到控制器中的代码。
<div class="modal-header s-example-modal-sm" aria-labelledby="mySmallModalLabel">
&时代;新问题模式函数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' );
}
嘿,伙计们刚刚找到答案。感谢您的所有建议和建议。
<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将其更改为question。即使您将$config[csrf-protection]设置为TRUE,这也会起作用;或$config[csrf_generate]=TRUE;这是我最新的答案。
如在文档中尝试在Config
文件中设置
$config['csrf_regenerate'] = FALSE;
试试这个:
$.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:
部分。
这里有几个问题。首先发送一个键为"name"、值为"question_header"的参数,然后通过其值而不是名称引用输入参数。这不会解决问题,但却是第一个错误。
其次,在控制器方法中,显示一些JSON数据,然后调用redirect
。这可能导致您的错误。如果你在这里推送重定向,你将只重定向AJAX调用,而不是浏览器渲染的页面。
如果您希望重定向访问者,则必须通过输出包含重定向数据的有效JSON来通知AJAX响应处理程序,然后解析该JSON响应并使用JavaScript进行重定向。