ajax可以有任何保留/特殊变量吗?

时间:2013-06-05 14:15:48

标签: ajax apache post

我遇到了一个非常奇怪的错误,我不知道发生了什么。

我使用一个名为password的变量调用POST ajax调用,如下所示。

的JavaScript

$.ajax({
    type: 'POST',
    url: '/test.php',
    data : {
        password : '123\''
    },
    dataType: 'text'
})
.done(function (response) {
    console.debug('success');
})
.fail(function (err,textStatus,errorThrown) {
    console.debug('fail');
});

PHP

<?php

$password = $_POST['password'];
echo $password;

?>

此操作因403 Forbidden错误而失败。我假设这是因为变量password包含未编码的单引号,而$ .ajax默认使用application/x-www-form-urlencoded。但是,如果我将变量的名称更改为其他名称,例如text,然后就不会发生错误。

我在Linux上的XAMPP和我的生产服务器(我从Namecheap.com租用)上测试了这个。错误只发生在后者中。两个服务器都在使用Apache。

所以我认为变量名有一些意义,但我没有听说过通过服务器配置对JavaScript变量名实施这种限制的方法。或者也许是由别的东西完成的。这里发生了什么?我是否应该停止打扰并选择其他变量名称?

2 个答案:

答案 0 :(得分:0)

这将是一个SQL注入防护过滤器,位于Apache之前或作为模块安装。检查您的.htaccess文件以确保您没有任何内容,然后与您的托管服务提供商联系。

答案 1 :(得分:0)

不是“适用于AJAX”,不,但可能适用于您发布的任何应用。也许您有一个全局身份验证层,尝试在任何页面上识别username / password对(这是一个坏主意),或者,正如Dark Falcon所说,您在Web服务器上安装了一些东西水平。在这里阅读服务器错误日志会很有帮助。