PHP で Web プロジェクトがあり、Restlet フレームワークを使用する Java プロジェクトにアクセスします。Web プロジェクトは Apache で実行されており、localhost を使用してテストしています。Restlet フレームワークもドメインとして localhost を使用しますが、URL は少し異なります: localhost:8888/
これは、Ajax を使用して、上記の URL を使用して Java クラスの 1 つ (CollectionPublic) を呼び出す Javascript です。
var url = "<?php echo $config['restServer_url'] ?>collectionPublic";
var params= "pageList="+facebookPages+"&time="+time;
var client = new XMLHttpRequest();
client.open("POST", url,true);
client.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
client.onreadystatechange = function () {
if (client.readyState != 4) return;
if (client.status != 200 && client.status != 304) {
alert("error "+client.status);
} else {
alert("success");
}
callback(client);
}
if (client.readyState == 4) return;
client.send(params);
テストしたところ、URL localhost:8888/collectionPublic を使用して呼び出しが正しく行われ、CollectionPublic クラスに到達しています (クラスは正常に動作しています)。
問題は次のとおりです。この呼び出しが行われると、CollectionPublic クラスがタスクを完了するのに長い時間がかかり、ユーザーは (同じサーバー上の) 他のページにアクセスしたり、ページをリロードしたりできるはずです。ただし、これらのいずれかが発生すると、alert("error "+client.status) がポップアップし、client.status の値が 0 になります。呼び出しは中止されますが、CollectionPublic のタスクは通常どおり続行され、終了すると、 Web ページでは何も起こりません (以前はアラート ("success") が発生していました)。
これは先週機能していたので、エラーの原因を突き止めるために何時間も費やしました. 私が見つけた投稿のほとんどは、localhost と localhost:8888 は同じドメインとは見なされないため、クロスオリジン リソースの問題である可能性があると述べています。それが本当に問題であるかどうかを確認するために、 --disable-web-security 引数を使用して Chrome を起動しました (実際には無効になっていました) が、問題はまだありました。最も奇妙なことは、それが以前に機能していたことであり、コードでまったく何も変更していません。
この記事のリロードページを見たことがありますが、進行中の Ajax リクエストは空の応答とステータスをゼロとして返します。これは、私が直面しているものと非常によく似ているようです。
うまくいけば、私は自分自身を明確にしましたが、この問題について疑問がある場合は、聞いてください.
よろしくお願いします。