バックグラウンド
Amazon S3 に保存されたモデルを視覚化するために、Javascript ライブラリ Three.JS を使用します。
すべてのモデルに JSONLoader を使用しています。他の形式は、私たちのチームが必要とするツールチェーンのサポートを欠いており、COLLADA や OBJ などの一般的な形式は、含まれているローダー ライブラリに関する限り、二流の市民のようです (たとえば、「例」の下のソース ツリーにあります.. . JSONLoader はコア ローダー フォルダーにあります)。
私は大きなモデル ファイルを持っているので、帯域幅とスペースが比較的安価な Amazon S3 ストレージにそれらとそれに関連するアセットを保存します。その意図は、Three.JS を使用する Web アプリが Amazon のストレージからモデルをロードすることであり、すべて問題ありません。
問題
残念ながら、モデルは Javascript ファイル (「modelBlah.js」など) であり、JSONLoader によってモデルが読み込まれると、正常なブラウザーはすぐに、スクリプト作成の同一生成元ポリシーに違反しているという事実について口を閉ざします。呼び出し元のスクリプト (アプリのメイン ハーネス) とは異なるドメインからスクリプトを読み込んで評価しようとしています。
そのため、私たちは長年にわたる Web セキュリティのベスト プラクティスに直面して失敗したように思われます。
これまでに見たソリューション
モデルを自分たちでホストしますか? 今のところ Heroku を使用していますが、理想的には、自分で行うのではなく、「ビット数と帯域幅のビッグ バケット」として明確に請求されるサービスを使用したいと考えています。
DNAME レコードを使用して、リソースの出所を偽装しますか? 残念ながら、メディア ホスティングに使用されるサブドメインが依然としてブラウザのセキュリティを激怒させるため、これはブラウザをだますには十分ではないようです。
CORS、具体的には Access-Control-Allow-Origin ヘッダーを使用しますか? 私が間違っていることを願っていますが、Amazon S3 の簡単なスキミングではこれが許可されていないようです。それでも、それで十分でしょうか?
何か案は?