2

私はJavaでWebアプリを書いています。私のhtmlファイルには、5秒ごとにセッション(HeartBeat)を保持するために、サーバーに空の要求を送信する小さなJavaScriptがあります。

XMLHttpRequestオブジェクトを使用してTomcatサーバーにリクエストを送信しています。

問題はIE9、最初のリクエストでステータスを取得し200、その後、すべてのリクエストで304回答を取得することです。FirefoxとChromeでは正常に動作しています。

IEでJavascriptから空のリクエストを送信し続け、304を取得しないようにするにはどうすればよいですか。

私のコードは次のとおりです。

<script>
var HeartBeatTimer; 
function StartHeartBeat(){
   // pulse every 30 seconds
    if (HeartBeatTimer == null)
      HeartBeatTimer = setInterval("HeartBeat()", 1000 * 5);
}

function HeartBeat(){
            var HTTP_Response = new XMLHttpRequest();
    HTTP_Response.open("GET", myurl , true);
    HTTP_Response.send(null);    
}

my servlet that get the request:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

}

このスクリプトの目的は、セッションを存続させることです。

4

3 に答える 3

1

URLにランダムな部分を追加するか、POSTリクエストを送信してください

myurl = myurl + "?_=" + (+new Date());

また

HTTP_Response.open("POST", myurl, true);

-versionの場合はPOST、サーブレットコードも調整する必要があります。

setIntervalまた、またはの最初のパラメータとして文字列を使用しないでくださいsetTimeout。関数自体を渡すだけです。

setInterval(HeartBeat, 1000 * 5);
于 2012-11-19T14:42:51.630 に答える
1

以下を使用してください。

HTTP_Response.open("GET", myurl + "&rand=" + Date.now(), true)
于 2012-11-19T14:42:54.367 に答える
1

次のHTTPヘッダーを送信することで、キャッシュを禁止できます。

response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 1L);
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
于 2012-11-19T15:07:11.763 に答える