3

バックグラウンド

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 の簡単なスキミングではこれが許可されていないようです。それでも、それで十分でしょうか?


何か案は?

4

3 に答える 3

2

これで、AmazonでCORSを最終的に使用できるようになりました:http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors.html

于 2012-09-27T00:27:31.450 に答える
0

あなたは間違いなくCORSを必要としています.S3はそれを可能にすると思います. それ以外の場合は、今週末、CORS を有効にして Google の Cloud Storage にバケットをセットアップする必要がありましたが、それはかなり簡単でした (gsutil を使用)。

于 2012-07-29T01:46:28.373 に答える
0

S3 ではまだ COR を設定できません。この正確な問題を回避するために、モデルをダウンロードするためのプロキシ サーバーとして機能する EC2 インスタンスを実行することになりました。プロキシ (現在実行中のノード) は S3 からファイルを取得し、CORs ヘッダーを設定してアプリケーションに渡します。knox や bufferjs など、ノードのセットアップには多くのオプションがあります。

于 2012-08-07T20:00:48.830 に答える