You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中使用Ajax传递URL时遭遇412错误求解决

解决Ajax POST请求返回412 Precondition Failed错误的方案

首先,412错误代表前置条件不满足,服务器拒绝处理你的请求。结合你使用CodeIgniter框架(从site_url调用能看出来),最常见的原因和解决方案如下:

1. 缺失CSRF令牌验证(最可能的原因)

CodeIgniter默认开启了CSRF保护机制,所有POST请求必须携带有效的CSRF令牌才能被服务器接受。你的Ajax请求里没有传递这个令牌,这大概率是触发412错误的元凶。

修复步骤:

  • 先确保页面中存在CodeIgniter生成的CSRF隐藏字段(如果用form_open()生成表单,框架会自动添加;如果没有表单,手动添加):
<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">
  • 修改你的Ajax代码,在data中加入CSRF令牌:
$(function() {
    $(".check-multi").change(function() {
        // 获取CSRF令牌的名称和值
        const csrfName = "<?php echo $this->security->get_csrf_token_name(); ?>";
        const csrfHash = $('input[name="' + csrfName + '"]').val();
        
        $.ajax({
            type: "POST",
            url: "<?php echo site_url('adm/updateproperty'); ?>",
            async: true,
            data: {
                link: $(this).data('link'),
                [csrfName]: csrfHash // 加入CSRF令牌
            },
            success: function(msg) {
                alert('Success');
                if (msg!= 'success') {
                    alert('Fail');
                }
            },
            error: function(xhr) {
                // 新增错误回调,方便查看具体错误信息
                console.log(xhr.responseText);
            }
        });
    });
});

2. 检查服务器端的前置条件校验

查看你的adm/updateproperty控制器方法,有没有对link参数设置前置校验逻辑——比如要求link必须是非空、符合特定格式(如包含http/https),如果不满足就返回412错误。

举个例子,服务器端可能有类似代码:

if (!filter_var($this->input->post('link'), FILTER_VALIDATE_URL)) {
    $this->output->set_status_header(412);
    exit('Invalid URL format');
}

如果是这种情况,你需要确保前端传递的link值符合服务器的校验规则,或者调整服务器端的校验逻辑。

3. 确认请求头和参数格式

虽然概率较低,但可以尝试明确指定请求头的Content-Type,确保和服务器预期一致:

$.ajax({
    // 其他配置...
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    // 其他配置...
});

另外,建议你打开浏览器的开发者工具(F12),查看Network标签下该请求的响应内容——服务器通常会在响应体里说明具体的前置条件失败原因,这能帮你更快定位问题。

内容的提问来源于stack exchange,提问作者Cool Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:27:42