我遇到了一个非常奇怪的错误,我不知道发生了什么。是否有任何保留/特殊变量的Ajax?
我使用一个名为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变量名实施这种限制的方法。或者也许它是由别的东西来完成的。这里发生了什么?我应该停止为此而烦恼并选择一个不同的变量名称吗?
这听起来像是其中一台服务器上的安全过滤器(用于传入请求)。 – SLaks