jQuery プラグイン jCryption を使用した Internet Explorer 9 および Internet Explorer 8 Comp (これまでのところ) に問題があることを発見しました。最初にページを呼び出すと、IE バージョンで正常に動作します。ページへの後続の呼び出しでは、ハンドシェイクのみが呼び出され、キーペアの生成は無視されます。問題は、これらのバージョンの IE がキャッシュを処理する方法です。
jCryption のソース コードを調べたところ、鍵ペアの生成を呼び出す一連のコードを次に示します。
/**
* Gets the data from the specified url, and converts it into a RSA keypair
* @param {string} url The URL to contact
* @param {string} data The JSON data
*/
$.getJSON(url, function(data) {
var keys = new jCryptionKeyPair(data.e, data.n, data.maxdigits);
if($.isFunction(callback)) {
callback.call(this, keys);
}
});
リクエストをGETからPOSTに変更しました。これにより、このリクエストのキャッシュが効果的に無効になります。
$.ajax({
url: url,
dataType: 'json',
type: "POST",
success: function(data) {
var keys = new jCryptionKeyPair(data.e, data.n, data.maxdigits);
if ($.isFunction(callback)) {
callback.call(this, keys);
}
}
});
ハンドシェイクコードは、jQuery Ajax POST 要求も作成するという点で似ています。