PhoneGap + AngularJS (クライアント) --- ExpressJS + MongoDB (サーバー) を使用して構築されたアプリがあります。アプリは、Ubuntu マシン上の Amazon EC2 でホストされています。アプリは完全に正常に機能していましたが、...
EC2 マシンで次のことを行いました。
sudo apt-get update
これを行った後、アプリで Cross Origin 共有エラーが発生し始めました (Chrome のコンソールを見てください)。私の AngularJS アプリには、次のようなコードがあり、エラーがスローされていました。
$http.get('http://amazon.ec2.foo/offers').success(function(data) { });
エラーは次のとおりです。
XMLHttprequest doesn’t allow Cross-Origin Resource Sharing on http://localhost:8000
したがって、サーバーアプリを次のように更新しました。
app.all("/api/*", function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS");
return next();
});
これは最初は問題ないように思えました。Cross Origin エラーが発生しなくなり、コンソールで http 要求からの応答を確認できました。ただし、応答をコンソールに出力した直後にアプリが応答を停止し、ハングしているように見えます。Web ページのどの部分をクリックしても、開発者コンソールを開くこともできません。それを開く。Chrome の他のタブはまったく問題ありませんでした。
これをしばらくデバッグした後、以前は (これらのアプリヘッダーなしで) サーバーから HTTP 200 を取得していたことがわかりましたが、現在は HTTP 304 (NOT MODIFIED) を取得しており、Angular が次のように扱っているようですエラー。
タブで約 2 分間待機すると、Web ページが http 要求から受信したデータをロードする結果になることがわかりましたが、Web ページは応答しません。
これを AngularJS が HTTP 304 で何か奇妙なことを行っていることに絞り込むために、いくつかのことを確認しました。
- 同じエラーでこれをローカルホストで実行しています。したがって、EC2 とは関係ありません。
- 簡単なデータを送り返すためにmongodbを削除しました。つまり、Mongoとは何の関係もありません。
- これを単純なサーバーとして Chrome で実行しているため、問題となる PhoneGap を排除しました。
誰かがこれを前に見たことがありますか / 問題が何であるか、どうすれば解決できるか知っていますか?
ありがとう!