4

私はこれに困惑しています...私はリモートウィジェットタイプのセットアップを行っています.両方のドメインを制御するので、セキュリティは問題ではありません. クロスドメイン ajax リクエストを許可するために jsonp を使用しています。

訪問したサイトは domain1.com で、次のものが含まれます。

<script src="domain2.com/file.js"></script>

file.js は jQuery を使用して ajax リクエストを作成します。

$.ajax({
   url: 'http://domain2.com/getdata',
   dataType: 'jsonp',
   success: function(response) {
       div.html( response );
   }
});

リモート サーバーから html を使用して div をリロードするウィザードのような手順で、これらの手順のいくつかを実行します。

私が直面している問題は、各 ajax リクエストで、新しい php セッション ID を取得し、セッション データが消えることです。PHPの終わりは問題ありません.同じドメインから同じスクリプトを実行すると(まだjsonpを使用しています)、すべて正常に動作します. ただし、リモート ドメインから実行すると、セッションが維持されません。これがなぜなのか、私にはわかりません.phpエンドが独自のドメインからCookieを設定してリクエストしています。JS から Cookie にアクセスする必要はありません。Cookie が書き込まれ、サーバーに保存されます。しかし、ブラウザーに保存されている Cookie を確認するたびに、セッション ID が変更されました。

何か案は?

4

3 に答える 3

2

非常に単純なテスト ケースを作成したところ、問題なく動作しました。

実際のアプリは、cakephp とそのセッションを使用しています。代わりに $_SESSION を使用するように切り替えてみましたが、うまくいきませんでした。コントローラーに session_start() を追加しようとしましたが、うまくいきませんでした。最後に、configでcakephpセッションを無効にしましたが、今では問題なく動作しています。

なぜ機能しなかったのかわかりませんが、cakephp の不具合のようです。

于 2010-01-21T01:24:45.053 に答える
0

申し訳ありませんが、jsonpを使用していることを読みませんでした。したがって、これは解決策ではありません...

Javascriptを使用すると、Webサイトが実行されているドメインとは異なるドメインに対してAJAX呼び出しを行うことはできません。これは同一生成元ポリシーと呼ばれ、サイトにXSSの問題がある場合に備えてセキュリティを強化します。詳細については、ウィキペディアの記事を参照してください。http: //en.wikipedia.org/wiki/Same_origin_policy サーバーにルーティングphpスクリプトを提供することで、サーバーを介してJavascriptAJAX呼び出しをターゲットドメイン/サービスなどにルーティングできます。 。

于 2010-01-21T17:54:40.057 に答える
0

ajax jsonp リクエストを同じドメイン内の php ファイルに向け、その php ファイルで cUrl を検索し、2 番目のドメインへのリクエストを実行します。

つまり、php ファイルを 2 つのドメイン間のトンネルとして使用します (cUrl は単なる例です)。

于 2010-01-21T00:27:55.077 に答える