ほとんどのMVC
フレームワークは、Web ページに配置する前に、サーバー データのエスケープをサポートしています。jQuery
のajax
メソッドに同じことを行うオプションが見つかりませんでした。実際、ページに適切に表示するために文字列をエスケープするネイティブの jQuery 関数を見つけることさえできませんでした (コンテンツを に入れ、div
を呼び出し.html(
ても、空白が保持されるとは限りません)。underscore
この関数が jQuery では利用できないのに、prototype
ライブラリで見つけることができるのはなぜですか?
質問する
593 次
1 に答える
2
HTML マークアップ ( <br/>
、<a>
、 など&
) が HTML マークアップとして扱われないようにしたいということだと思います。ユーザーに直接表示したいだけです。これにより、XSS (クロスサイト スクリプティング) などの攻撃を防ぐことができます。
これは実際には jQuery を使用すると非常に簡単ですが、エスケープとは異なります。メソッドを使用しているだけですtext
。つまり、コンテンツはマークアップとしてではなく、テキスト コンテンツとして扱われます。
$.ajax({
url: 'someurl',
success: function(data) {
$('#yourElement').text(data);
}
});
クライアント側とサーバー側では動作が異なります。サーバー側で作業すると、マークアップを処理します。これは、パーサーがテキストであるべきコンテンツをマークアップとして処理するのを停止するためにエスケープする必要があります。クライアント側では、マークアップは既に解析されているため、ブラウザに「これはテキスト コンテンツです」と伝えるだけで済みます。これは、さまざまな方法 ( innerText
、document.createTextNode
、さらにはdocument.createCDATASection
) で実行できます。jQuery のdata
メソッドがこれを行います。
于 2012-08-28T09:31:32.123 に答える