JQuery $ .post有时工作有时返回403禁止错误

时间:2012-07-31 23:02:50

标签: php jquery ajax post

有时我会收到403禁止错误,我无法查看错误。
这是我的jQuery代码:

    $.ajax({
        type: 'POST',
        url: './ajax-conf-editc.php',
        data: { conf_id: Id, conf_contenido: data },
        async: false,
        success: function(msg){
            if ( msg == '1' || msg == 1){
                var confname = $('#nameConf').val();
                $.cookie('SUCCESS', 'Se ha guardado el contenido de la configuración "' + confname + '".', { expires : 1, path : '/' });
                $(window.location).attr('href', 'index.php');
            } else {
                $('#conf-editc-form').removeAlertBoxes();
                $('#conf-editc-form').alertBox(msg, {type: 'error'});
            }
        }
    });

使用此数据可以正常工作:

  

conf_id = 11&安培; conf_contenido =%2523tabs-0%253CtabContent%253E%253Cp%253EContenido%253C%2FP%253E%253CtabTitle

但是当我发送这个,失败并返回403 Forbidden

  

conf_id = 11&安培; conf_contenido =%2523tabs-0%253CtabContent%253E%253Cp%253E%253Ca%2520onclick%253D%2522javascript%253A%2524%2528%2520%2527%2523tabs%2527%2520%2529.tabs% 2528%257Bselected%253A1%257D%2529%253Bscroll%25280%252C0%2529%2522%2520href%253D%2522javascript%253Avoid%25280%2529%253B%2522%253EContenido%253C%2FA%253E%253C%2FP%253E% 253CtabTitle%253EInicio%253Ctabs%253E%2523tabs-1%253CtabContent%253E%253Cp%253EContenido%25201%253C%2FP%253E%253CtabTitle%253Edos

我希望有人可以帮助我,并告诉我为什么会这样?

这是我失败时得到的信息:

禁止

您无权访问此服务器上的/kidspc2/configuraciones/ajax-conf-editc.php。

此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。

编辑:这可能是mod_security吗?怎么检查呢?

编辑:我解决了这个问题,在Base64中加入了conf_content值。

2 个答案:

答案 0 :(得分:1)

尝试删除网址和斜杠中的点

将此./ajax-conf-editc.php更改为此ajax-conf-editc.php并告诉我你得到了什么。

答案 1 :(得分:1)

我猜你的$ .ajax会在很短的时间内被请求多次,这就是你得到这个404错误的原因。 你可以通过取消所有以前的ajax调用来修复它,并为最新的ajax调用请求进行新的ajax调用。希望这可以帮助。

如下面的代码:

    if( this.ajax ){
            this.ajax.abort();
        }
        this.ajax=$.ajax({
        type: 'POST',
        url: './ajax-conf-editc.php',
        data: { conf_id: Id, conf_contenido: data },
        async: false,
        success: function(msg){
        if ( msg == '1' || msg == 1){
            var confname = $('#nameConf').val();
            $.cookie('SUCCESS', 'Se ha guardado el contenido de la configuración "' + confname +        '".', { expires : 1, path : '/' });
            $(window.location).attr('href', 'index.php');
        } else {
            $('#conf-editc-form').removeAlertBoxes();
            $('#conf-editc-form').alertBox(msg, {type: 'error'});
        }
    }
});