1

私がホストしているWCFサービスから約4〜6 KBのデータを取得し、canvasタグ(HTML5)を使用してグラフを描画するJavaScriptウィジェットを作成しています。私が共有しているhtmlとJavaScriptをコピーして貼り付けることで、誰でもこのウィジェットを自分のWebサイトに埋め込むことができるようにしたいと思います。

問題:同一生成元ポリシーでは、ウィジェットのホストドメインから私のドメインのWCFサービスへのXHRリクエストは許可されません。つまり、ウィジェットを使用しているユーザーは、私のWCFサービスからデータを取得できません(すべてのリクエストが取得されます)応答で約4〜6kbのデータ)。

私はこのサイトで以前の議論を経て、次の可能な解決策を見つけました:

  1. JSONP(私のWCFサービスで使用できます)
  2. 非表示のIframe(両方のドメインを制御できないため不可能)
  3. window.postMessage(JavaScriptライブラリが古いブラウザ(IE6など)で動作するかどうかはわかりません)
  4. クロスオリジンリソースシェアリング(CORS)(IE6などの古いブラウザーを使用できるようにしたいので不可能)
  5. リバースプロキシ方式(ユーザーのWebサイトのサーバーを制御できないため不可能)
  6. easyXDM(可能な解決策になる可能性がありますが、私のWCFサービスでそれを使用する方法を調査する必要があります)

まず、可能なさまざまなアプローチについて私が行った簡単な分析が正しいことを皆さんに確認したいと思います。私は誰もが使用している優れたソリューションを見逃していません。私の分析が正しければ、長所について話し合いたいと思います。そしてこれらのアプローチの短所。

第二に、Facebook、Twitter、Googleのすべてがアプリを共有し(正確に私が共有したい方法で)、そうするためにこの問題を克服したことを知っています。この問題を解決しました。

4

1 に答える 1

0

それはあなたが基づいて判断する必要があるものです

  • ライブラリを含め、ウィジェットが許容できる大きさ。
  • サービスをポーリングする必要がある頻度、または1回限りのイベントかどうか。
  • ブラウザの完全な互換性があなたにとってどれほど重要か。

あなたが説明する特定のユースケースについては、JSONPをお勧めします。ウィジェットを非常に小さく保ち、優れたクロスブラウザソリューションであり、適度なデータ要件を処理できます。

Googleなどは、「comet」タイプのソリューションを使用しています。このソリューションでは、ストリームのようなソケットがクライアントとサーバーの間で永続化されます。これは、ブラウザリソースを占有するため、ウィジェットには使用しないでください。

于 2011-02-05T16:15:10.870 に答える