ほとんどのMVCフレームワークは、Web ページに配置する前に、サーバー データのエスケープをサポートしています。jQueryのajaxメソッドに同じことを行うオプションが見つかりませんでした。実際、ページに適切に表示するために文字列をエスケープするネイティブの jQuery 関数を見つけることさえできませんでした (コンテンツを に入れ、divを呼び出し.html(ても、空白が保持されるとは限りません)。underscoreこの関数が jQuery では利用できないのに、prototypeライブラリで見つけることができるのはなぜですか?
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 に答える