何が起こっているのかわからないという本当に奇妙なエラーに遭遇しました。
次のように呼び出される1つの変数を使用して、POST ajax呼び出しを作成しpassword
ています。
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 の変数名にそのような制限を課す方法は聞いたことがありません。あるいは、他の何かによって行われているのかもしれません。ここで何が起きてるの?これを気にするのをやめて、別の変数名を選択する必要がありますか?