誰かが提案してもらえますか、私はこれを丸一週間理解しようとしていますが、それでも運がありません。
私の問題はWebアプリケーションです。ユーザーがリンクをクリックすると、特定のリンクをクリックした後(他のリンクは正常に機能しています)、IE8ブラウザーは3つのHTTP要求をサーバーに送信します。リクエストを1つだけ送信することを想定しています。
最初のHTTPリクエストはPOSTです-ヘッダーと本文のデータは正しいです(すべてのパラメーターが適切に見えます)
2番目のHTTPリクエストはPOSTです-ヘッダーと本文のデータは正しいです(すべてのパラメーターが適切に見えます)
3番目のHTTPリクエストはGETです-ヘッダーにリファラーはなく、本文には何もありません(GETであるため)。
3番目の要求により、サーブレットはFORMパラメータを読み取ろうとするため、サーブレットはNULLポインタの例外をスローします。
すべてのリクエストは同じサーブレットに送信されます。3つのリクエストは1〜2秒以内に発生します。これはマルチクリックではないと確信しています。
ユーザーは、WindowsXPでIE8を使用しています。これは私の環境では再現できません。
私は1週間インターネットについて調査しましたが、サーバーへの二重要求を作成するIE8の既知の問題に気づきました。その場合は、Javascriptの「.submit()」に関するもののようです。私は自分のコードを非常に詳細に調べましたが、そうではないと思います。
リンクは次のようになります。提案してください。
<a href=\"#\" onClick=\"test.goToNextPage();return false;\">Test link</a>
this.goToNextPage = function()
{
// do some paramter manipulation here (such as customer data),
//not related to this issue
createForm().submit();
}
function createForm()
{
bcForm = document.createElement("form");
bcForm.setAttribute("method", "POST");
//real code add some hidden parameter(e.g. action, Form ID) and value here...
document.body.appendChild(bcForm);
return bcForm;
}