CKEDITOR と ajax を使用して、作成した Web サイトにニュースを投稿しています。
すべて正常に動作しますが、たとえば、投稿時にstyle="display:none"を含むテキストを送信すると、403 エラーが発生するようです。その行を削除するか、 style="misplay:none"のような文字を変更すると、起こりません
これが私のコードです
PHP
$title=$this->input->post('title');
$body=$this->input->post('body');
$published=$this->input->post('published');
$tags=$this->input->post('tags');
Ajax 呼び出し
$.ajax({
url: '/reviews_aj/addreviews',
type: 'POST',
data: {'title':title,'body':body,'published':published,'tags':tags},
success: function(result){
...
}
});
最も奇妙な部分は、addreviews関数が実際に呼び出されているのに、$_POST が空のように見え、403 エラーが返されることです。
送られてくるのはこれ
id=18&title=asdasdas&body=style%3D%22display%3Anone%22&published=false&tags=
var_dump($_POST); 空の配列を返します。
私は問題がJqueryであると考え始めました。どういうわけか特別な文字を間違った方法で変換しています(そしてCodeigniterのuriの再ルーティングをいじっています。
@sherhamsの編集 これを試すように頼まれました。
var temp = {'title':title,'body':body,'published':published,'tags':tags};
console.log( JSON.stringify(temp, undefined, 4) );
これが出力です
{
"title": "style=\"display:none\"",
"body": "<p>\n\tasdasd</p>\n",
"published": false,
"tags": ""
}
私が期待したものとまったく同じように見えます
編集:
単純な POST (単純なフォームである ajax ではありません) で送信しても機能しないことに気付きました。
編集:
style='display:none' は一重引用符で動作しますが、CKEDITOR の出力は制御しませんが、二重引用符と一重引用符の両方で動作するはずです