1

jQuery Form プラグインを使用して、AJAX 経由でフォームを送信し、JSON 応答を受け取ります。

$('#'+searchFormView.form.form.id).ajaxForm({
    dataType:'json',
    success:This.renderSearchResults,
    error:This.error
});

HTTP 応答本文:

{
"grid":{
    "headers":[
        "Image","Additional","data","button"
    ],
    "rows":[
        ["<img src=\"\Path_to_image\" alt=\"picture\">",
         "Additonal",
         "data",
         "<button>Button text<\/button>"
        ],
        [Some more of these arrays]
    ]
}
}

Chrome と FF はこれでまったく問題ありません。それはうまくレンダリングされます。IE は、success メソッドに到達するまでにデータ値から HTML を取り除きます。

renderSearchResults:function(data){
    console.log(data.grid.rows[0][0]);
    // Render the grid.
}

IE でのコンソール ログの結果:

Log:

success メソッドの実行中にローカル変数を監視すると、次のようになります。

"{
    \"grid\":{
        \"headers\":[
            \"Image\",
            \"Additional\",
            \"data\",
            \"Button\"
        ],
    \"rows\":[
        [\"\",\"Additional\",\"data\",\"Button text<\\/button>\"],
        ...

ご覧のとおり、HTML タグはなくなりました (不思議なことに、タグはまだ残っています)。

これは XSS 保護であるはずですか?

どうすれば回避できますか?

4

0 に答える 0