2012-01-15 4 views
0

私のアプリケーションでは、サーバーから最新のデータを受け取るために定期的なクロスドメインHTTP POST要求を行う必要がありました(定期的なポーリング)。アプリケーションはIE8で動作していませんでしたが、Chromeで動作していました。そこで私はWiresharkでこれをデバッグすることにしました:IE8が連続した同一のXDomainRequestメッセージのキャッシュ結果を返すのはなぜですか?

私はIE8とChromeで2つの同等のコードを実行しました。 Wiresharkで私のネットワークを監視しました。 Wiresharkのフィル​​タは次のとおりです。

http.request.full_uri == "http://www.andlabs.net/html5/uCOR.php" 

私はIE8は一度だけの要求を送信し、次の呼び出しで同じキャッシュされた応答を返すことに気づきました。一方、Chromeは毎回新しいリクエストを送信します。

私はIE8のために使用されるコード:

var cor = new XDomainRequest(); 
cor.onload = function() { alert(cor.responseText);} 
cor.open('POST', 'http://www.andlabs.net/html5/uCOR.php'); 
cor.send(); 

私はクロムに使用されるコード:IE8にキャッシュ応答を防止するために

var cor = new XMLHttpRequest(); 
cor.onload = function() { alert(cor.responseText);} 
cor.open('POST', 'http://www.andlabs.net/html5/uCOR.php'); 
cor.send(); 

私は、次のコードを試み、それが働いた:

var cor = new XDomainRequest(); 
cor.onload = function() { alert(cor.responseText);} 
cor.open('POST', 'http://www.andlabs.net/html5/uCOR.php'); 
cor.send(''+new Date()); 

なぜIE8がこのように動作し、これとは別の方法でこれを解決する方法がありますか私はしましたか? GETリクエストには同じトリックを使用できないことに注意してください。

要求:

POST /html5/uCOR.php HTTP/1.1 
Accept: */* 
Origin: http://jsbin.com 
Accept-Language: en-US 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) 
Host: www.andlabs.net 
Content-Length: 0 
Connection: Keep-Alive 
Cache-Control: no-cache 

は応答:

HTTP/1.1 200 OK 
Content-Type: text/html 
Server: Microsoft-IIS/7.0 
Access-Control-Allow-Origin: * 
X-Powered-By: ASP.NET 
Date: Tue, 17 Jan 2012 21:41:39 GMT 
Content-Length: 180 

This is a page from www.andlabs.net which is accessible from any website through Cross Origin Requests<br>This page contains the following header:<br>Access-Control-Allow-Origin: * 
+0

uCOR.phpの応答ヘッダーを含めることはできますか? – monsur

+0

要求と応答の詳細が追加されました。 – CEGRD

答えて

2

を任意のキャッシングヘッダがないように見えます、次のように要求し、IEの応答があるところで

応答では、ブラウザは異なる動作をする可能性があります。応答に次のヘッダーを追加できますか?Cache-Control: no-cache

+2

投稿メッセージをキャッシュしたいのはなぜですか? POSTの定義に反してサーバー上の情報が変更されていませんか? – CEGRD

関連する問題