IBMConnections用のIBMSocialBusiness ToolKitを使用してOpenSocialガジェットを構築しようとすると、Access-Control-Allow-Originエラーが発生します。
このガジェットに参加しているサーバーは3つあります。
- 接続:ガジェットをホストするIBMConnections4.0サーバー
- IBMSBT:SocialBusinessToolkitスクリプトとアプリをホストするサーバー
- JESSE_API:ガジェットが使用するAPIをホストしているアプリケーションサーバー
ガジェットxmlは、CONNECTIONSによってJESSE_APIからロードされます。ガジェットのビューはスクリプトをロードし、JESSE_APIを呼び出します。Connectionsの一部にアクセスするためにSocialBusinessToolkitを使用したいので、ガジェットビューはIBMSBTからそれらのコンポーネントもロードします。
私は現在これをプロトタイプ化しています-Connections4.0APIを使用するだけでこれを機能させることができましたが、SBTライブラリを使用したいと思います。
開始するには、「Get My Communitys-Main Window」スニペットをガジェットのビューにドロップし、次のスクリプトを含めました。
<script type="text/javascript">
var djConfig = {
parseOnLoad: true
};
</script>
<script src="//IBMSBT/sbt.dojo180/dojo/dojo.js"></script>
<script src="//IBMSBT/sbt.sample.web/library?ver=1.8.0"></script>
ガジェットをリロードすると、コンソールに次のエラーが表示されます。
XMLHttpRequest cannot load http://IBMSBT/sbt.sample.web/service/proxy/connections/http/CONNECTIONS/communities/service/atom/communities/my?ps=5
ガジェットはCONNECTIONSサーバーで実行されていたので、プロキシは必要ありません。このエンドポイントのプロキシをすぐに無効にする方法がわからなかったため、次のコードが実行される160行目の前にEndpoint.jsにブレークポイントを設定しました。
if(this.proxy) {
args.url = this.proxy.rewriteUrl(args.url,this.proxyPath);
}
ブレークポイントに到達したら、this.proxy = nullを設定します。これにより、プロキシが使用されず、コミュニティ情報が正しく返されます。
私の質問は、これを別の方法で行うべきか、それとも現在使用している構造を考慮してプロキシの使用をバイパスする方法を追加すべきかということです。