我遇到了一个非常奇怪的错误,我不知道发生了什么。
我正在使用一个名为的变量进行 POST 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
包含一个未编码的单引号,并且 $.ajaxapplication/x-www-form-urlencoded
默认使用。但是,如果我将变量的名称更改为其他名称,例如text
,则不会发生错误。
我在 Linux 上的 XAMPP 和我的生产服务器(我从 Namecheap.com 租用)上对此进行了测试。该错误仅发生在后者中。两台服务器都使用 Apache。
所以我认为变量名有一定的意义,但是我还没有听说过任何方法可以通过服务器配置对 JavaScript 变量名进行这样的限制。或者也许它是由其他东西完成的。这里发生了什么?我应该停止为此烦恼并选择不同的变量名吗?