在 CodeIgniter 中使用 ajax 出现 403 禁止错误
Posted
技术标签:
【中文标题】在 CodeIgniter 中使用 ajax 出现 403 禁止错误【英文标题】:403 Forbidden error using ajax in CodeIgniter 【发布时间】:2018-11-28 18:04:37 【问题描述】:我正在使用 ajax 在我的 textbox
自动完成中显示名字,但我的 ajax URL 不起作用。每次都显示在网络标签中
403 禁止。
我试过这样的 ajax URL
url:baseUrl + "/index.php/Employee_control/search_with_emp_name",
url:baseUrl +"/Employee_control/search_with_emp_name",
但仍然显示相同的错误。
我的 .ht 访问代码
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
我的基本网址是$config['base_url'] = 'http://localhost/test/';
我的看法
<input type="text" class="form_control" name="employee_name" id="employee_name">
custome.js
var getUrl = window.location;
var baseUrl = getUrl.protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
$(document).ready(function()
$("#employee_name").keyup(function()
var emp_name = $('#employee_name').val();
$.ajax(
type: "POST",
url:baseUrl + "/index.php/Employee_control/search_with_emp_name",
data:
emp_name: emp_name
,
success: function(html)
alert(html);
);
);
);
控制器
public function search_with_emp_name()
echo $emp_name = $this->input->post('emp_name');
$get_result=$this->Employee_model->search_emp_name($emp_name);
print_r($get_result);
型号
public function search_emp_name($emp_name)
$this->db->like('firstname', $emp_name, 'both');
$query = $this->db->get('tbl_employee');
$result = $query->result();
if($result)
return $result;
else
return 0;
【问题讨论】:
Ajax call on CodeIgniter controller results in 403 Forbidden的可能重复 另见:***.com/q/7348383/594235 【参考方案1】:希望对您有所帮助:
首先确保您已在 config.php
中将 csrf 令牌设置为 false;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
或者,如果您不想将其设置为 false,只需在您的 ajax 调用中将数据传递给 csrf_token_name
和 get_csrf_hash
像这样:
data: '<?php echo $this->security->get_csrf_token_name(); ?>':'<?php echo $this->security->get_csrf_hash(); ?>',
似乎问题出在您的基本网址上,所以将这行代码放在页面标题中并使用BASE_URL
like this
<script type="text/javascript">
const BASE_URL = "<?php echo site_url();?>";
</script>
<script src="<?=site_url('your-js-path/js/custome.js');?>"></script>
你的 ajax 应该是这样的:
$(document).ready(function()
$("#employee_name").keyup(function()
var emp_name = $('#employee_name').val();
$.ajax(
type: "POST",
url: BASE_URL+"Employee_control/search_with_emp_name",
data: emp_name: emp_name,
success: function(html)
alert(html);
);
);
);
【讨论】:
我的 custome.js 文件在应用程序之外。 所以有什么问题只需提供我的答案中给出的路径 显示 404 not found 我只是想知道我在脚本中添加的 baseUrl 有什么问题? 所以给你的文件正确的路径,你有没有在你的 config.php 中启用 csrf 保护以上是关于在 CodeIgniter 中使用 ajax 出现 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter- Ajax Codeigniter Ajax - 通过ajax返回不止一行