私は現在、クライアントが学習管理システムを介して追跡したいWebアクティビティを開発しようとしています。彼らのLMSはAICC標準(HACPバインディング)を使用し、実際の学習オブジェクトを別のコンテンツリポジトリに保持します。
現在、LMSと「コース」が2つの異なるサーバー上にあることを考えると、それらの間の通信の種類に苦労しています。コースの開始時にURL文字列からsessionIdとaicc_urlを取得でき、LMSのaicc_urlに値を正常に投稿できます。
難しいのは、LMS(プレーンテキストとしてフォーマットされている)からの戻り応答を読み取って解析できないことです。AICCは、完了ステータス、前のセッションからのブックマーク情報、ユーザーID情報などの情報を取得するために、セッションIDを使用してaicc_urlに「getParam」コマンドを投稿することからコースを開始することを規定しています。
私はこれまでに3つの異なるアプローチを試しました。
1-私はjQuery(1.7)とAJAXを使用することから始めました。これは、通常、同じサーバーの実装を行う方法です。これにより、XMLHttpRequestで「トランスポートなし」エラーが返されました。フォーラムを読んだ後、ajax呼び出しのクロスドメインプロパティがtrueに設定されていることを確認し、ajax呼び出しの上に$ .support.cors=trueを挿入することをお勧めしました。どちらも役に立ちませんでした。
2&3- LMSから返されたテキストを送信して更新し、javascriptを介してそれを読み取る、下部フレームにフォームを備えたオールドスクールフレームセットを使用してみました。次に、コンテンツを読み取って解析するためのonloadハンドラーを使用して、実際のフォームのターゲットとしてiFrameを使用するバリエーション。これらのアプローチは両方とも同じサーバー環境で機能しましたが、クロスドメイン環境では失敗します。
他のすべてのコースはコンテンツリポジトリのブックマークとトラックの完了を実行していると言われているので、明らかにLMSからの戻り値を何らかの方法で読み取ることができます。AICCは、クロスサーバーシナリオで機能するものとして頻繁に売り込まれているため、私が見落としているAICC構造でこれを行うには、頻繁に使用される方法があるはずだと思います。これまでの私のフォーラム検索では、私がさらに得たものは何も見つかりませんでした。したがって、クロスドメインAICC実装の経験があれば、私は確かに推奨事項を使用できます。
私が残した唯一のアイデアは、コースと同じサーバーにPHPの「リレー」フォームを設定し、フロントエンドページに値を送信させ、PHPを使用してそれらをLMSに送信し、リレーすることです。 LMSからフロントエンドのiframeまたはajax呼び出しへの戻りテキスト。これにより、同じドメイン内にあると認識されます。サーバー側に移動せずに問題を解決する方法があるかどうかはわかりません。AICC内でこれに対する共通の解決策があるに違いないようです。
前もって感謝します!
編集と更新: 同様の問題が発生した場合は、問題の説明に役立つ可能性のあるリソースと、いくつかの代替ソリューションを見つけました。
1つ目は、Successfactorsに買収されたLMS業界の大手企業であるPlateauに固有のものです。これは、クロスドメインコンテンツを処理するためのプロキシの設定について提供するいくつかのドキュメントです:http: //content.plateausystems.com/ContentIntegration/content/support_files/Cross-domain_Proxlet_Installation.pdf
2番目に見つけたのは、Successfactorsのスライドプレゼンテーションで、クロスドメインコンテンツの課題を強調し、それを解決するためのバックエンドのアイデアを示しています。リバースプロキシの使用を含みます。関連する部分は、スライド21〜22(PDFの11ページ)から始まります。 http://www.successfactors.com/static/docs/successconnect/sf/successfactors-content-integration-turley.pdf
同じ問題を解決しようとしている他の人の助けになることを願っています!