AJAX 経由で URL を呼び出すと、どの Cookie が読み取られますか? セッションについても同様です。
実際にスレッドを実行しているのは誰ですか? それは私のデフォルトのシステムブラウザですか、現在のものですか、それとも他のエンティティですか?
これはすべて「舞台裏」で行われるため、混乱を招く可能性があります。他の Javascript と同様に、ページをロードするブラウザーが AJAX コードを実行することがわかりました。さらに、ブラウザの同じインスタンス、つまりセッションも使用できます。
この結論に達するために、少しコードを実行しました。次の例は、クラシック ASP のものです。
まず、これらの変数を書き込むファイルが 1 つあります。
Response.Cookies("testing") = "One, Two, Three"
Session("testing") = "Forty One, Forty Two, Forty Three"
次に、それらを読み取る (および結果を表示する) 1 つのファイル:
Cookie is:
<%
Response.Write Request.Cookies("testing")
%>
<br>
Session is:
<%
Response.Write Session("testing")
%>
最後に、それらを AJAXly で呼び出す 1 つのファイル:
<div id="result"></div>
<script type="text/javascript">
//Different browsers initiate ajax differently
try {var oXH = eval("new Active"+"X"+"Object('MSXML2.XMLHTTP')");}
catch(e) {var oXH = new XMLHttpRequest();}
//Call page that reads the cookie
oXH.open("GET","/testCookie.asp",true);
oXH.onreadystatechange = function(){
if ((oXH.readyState != 4)||(oXH.status != 200))
return true;
else
{
document.getElementById("result").innerHTML = oXH.responseText;
}
};
oXH.send(null);
</script>
最初のファイルを 1 つのブラウザーで実行し、最後のファイルをいくつかのブラウザーで実行すると、最初のファイルは次のように表示されます。
Cookie is: One, Two, Three
Session is: Forty One, Forty Two, Forty Three
残りの表示:
Cookie is:
Session is:
それで、あなたはそれを持っています:)