クロスドメインのAJAXリクエストに問題があります。
3つのサーバは、この問題に関与しています。我々は彼らA1、A2、およびBを呼び出すことができます。
およびは同じアプリケーションコードを実行しています。それらは、同じWebアプリケーションの2つのステージングインスタンスです。 Bは別のWebアプリケーションです。
我々はBアプリケーションに WebアプリケーションからのクロスドメインAJAXリクエストを実行する必要があります。私たちはCORSを有効にすることを実験しましたが、IE < = 8で問題なく動作するようになっていたので、今はnginxプロキシルールを使用しています。フローはそのためです:ブラウザのAJAX要求 - >A1またはA2 - > nginxのプロキシ - >B
Bは、ステートフルで、機能に、ユーザーのセッションCookieが必要です。私たちが見ている何
はA1サーバーを使用している場合、これが正常に動作することですが、A2サーバーを使用した場合、Bはクッキーを引き出すことはできません。
私はA2A1とからの要求のヘッダーを見てきましたし、彼らは同じです。どちらも、
は、私たちが見ることの要求がA2から来るとき$ _COOKIE [「SESSION_KEY」]が空であることであるが、適切に充填B上など、両方が同じ起源を持ち、ヘッダー内のクッキーのラインを持っていますリクエストがA1から来たときに出ます。
奇妙なことは、ヘッダー内のクッキーから特定の1つのクッキーキーを取り出しているだけで、リクエストがA2から来たときだけです。それは、A2細かいからヘッダー内の他のすべてのクッキーを解析し、要求がA1から来る場合、それはいくつかの理由で、ユーザのセッションクッキーを解析することはできませんが、それはうまくできます。
私はtcpdumpを使用し、これらのそれぞれのpcapsを取り、それらを差分を取っおよびヘッダーには何も特に違って見えていません。
私は、このスタックオーバーフローの問題を発見し、人々が彼のCookieヘッダー文字列が長すぎたので、それは言った:What could cause cookie to not be set in $_COOKIE when it's in $_SERVER私はそれがあまりにも長い鉱山の両方の成功と失敗の場合には、唯一の249文字の長さとしてはないと思います。
は、私はそれらを解析し、手動で$ _SERVERの外にクッキーをリッピング検討してる時点でだが、それは本当に愚かに聞こえると私は、根本的な問題を把握することを好むだろう。
A1サーバーとA2サーバーの両方でユーザーのセッションが設定されていますか?どのようにセッションデータがサーバー上に作成されていますか?彼らは同じマシンですか? – voncox