1

私の最初の投稿 - まず最初に、このサイトが素晴らしいことを言わなければなりません - 質問をすることなく何度も助けてくれました. 今まで!

PHP/MySql/JQueryを使用して構築されたWebアプリケーションを実行します-JQuery AJAXを使用してすべてがロード/投稿されます-.load()および.post()このWebアプリケーションを使用するさまざまなクライアントがいくつかあり、すべてフォームのsumdomainsがあります:client1 .example.com、client2.example.com、example.com は広告ページです。

クライアントがほとんどいなかったとき、ファイルを複製しました。たとえば、クライアント 1 に必要なすべてのファイルはフォルダー example/client1/ にあり、クライアント 2 は正確なコピーを example/client2/ に取得し
ます。クライアントの数が増えるにつれて、構造を次のように変更しました。そのクライアントは共通ファイルを共有していました - 今では AJAX 呼び出しはフォルダ /example/client1 から /example に行きます

各クライアントのサブドメインが実際のフォルダーにリダイレクトされていたため、これは正常に機能していました。たとえば、client1.example.com は example.com/client1 にリダイレクトされます。このリダイレクトは、ブラウザーの同一生成元ポリシーが原因で AJAX 呼び出しが失敗しないようにするために必要でした。

これが引き起こす問題は、PHP セッションが排他的ではないため、異なるクライアント間で共通のユーザーが、ログイン後に URL を変更することにより、他のシステムからの情報を見ることができることです。同じドメイン (example.com) にあるように。
これを回避するには、リダイレクトなしでサブドメインを使用することです。この方法では、PHP セッションが排他的になります。
これを行うと、Same Origin ポリシーにより、親フォルダーへのすべての AJAX 呼び出しが失敗します。:(

このクロスドメイン AJAX リクエストの問題を調査し、さまざまな解決策を試しました。

1) iFrame を使用したトンネリング - 親フォルダー内の AJAX オブジェクト - AJAX 呼び出しは成功します - しかし、PHP セッションで同じ問題が発生します - ドメインは client1.example.com ではなく example.com として認識されます

2) document.domain=example.com を設定するトリック - うまくいかないようです - これは古い時代遅れの回避策だと思います

3) PHP ヘッダーの設定 - header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); まったく機能しません

ajax 呼び出しに別のライブラリを使用したくありません。

現在、私は2つのオプションを考え出しました:

1)クライアントごとにファイルを複製する古い方法を使用します。これは、スペースの無駄であり、ファイルの更新が面倒になるため、やりたくありません。1つだけではなく、多くのファイルを置き換える必要があります。

2) すべての AJAX 呼び出しを受け取り、親フォルダーから要求されたファイルを含める各クライアント ディレクトリで PHP ベース ファイルを使用します。私はこれをテストしましたが、うまく機能しているようです-誰かがより良い解決策を持っていない限り、これは私が使用するオプションですか?
このオプションを詳しく説明するには: $.post'(http://example.com/file.php'); を呼び出すのではなく、サブドメインhttp://client1.example.com
のページから投稿しているとします。(これは失敗します) $.post('http://client1.example.com/base.php',{target:'file.php'}) を呼び出します。 次に、base.php から include('../' .$_REQUEST['ターゲット'])



オプション 2 に満足していますが、もっと良い方法があるのではないかと思うだけです。 ※似たような現象に遭遇した方はいますか?*

乾杯!J

4

2 に答える 2

0

アップデート

したがって、オプション 2 を使用しました。すべての AJAX リクエストが呼び出すサブドメインにベース ファイルを作成し、このベース ファイルは PHP インクルードを使用して実際のターゲット ファイルを取得します。

非常にうまく機能し、ファイルシステムを簡単に再構築するのに優れています。今後はすべてのプロジェクトでこの方法を使用します。

于 2012-10-01T11:35:28.140 に答える
0

クロスドメイン xml を使用してみましたか

于 2012-09-14T09:10:47.027 に答える