フロントエンド(静的)とバックエンド(API)が、同じドメインを共有することを除いて、完全に分離されているWebアプリを構築したいと思います。通常、これは問題ないと思いますが、いくつかの特別な要件があります。
- APIはHerokuで実行されます(DjangoとTastyPieを使用)
- HTMLファイルを含むすべての静的コンテンツはAmazonS3でホストされます
フロントエンドアプリは単一ページのJavascriptアプリケーション(ベーステンプレートを使用し、それを呼び出すことができますindex.html
)であり、AJAXを介してAPIからコンテンツを入力します。APIにCORSをまだ実装したくないので、同一生成元ポリシーに従いたいので、APIとS3(バケット)上のファイルの両方が何らかの方法で同じドメインを共有している必要があります。また、Djangoのフラットページアプリを使用したり、Djangoを介してレンダリングしたりすることもまったくありませんindex.html
。
Googleとstackoverflowをスキャンしましたが、これまでのところ適切な解決策を見つけることができませんでした。私が素朴な方法(ドメインをHerokuアプリとS3バケットにポイントする)を読んでいる限り、それは不可能です。私が考えているいくつかの解決策は、次のソースを見つけられませんでした:
- 可能であれば、ドメイン名をHerokuのAPIとS3バケットにポイントします
- いくつかのオプションをHerokuに渡して、S3でホストされているhtml(ProcFile?)をレンダリングし、DjangoとS3のライブラリを使用して他の静的アセットを取得します
- 多分これを達成するためにボトで何かをしている
- 他の完全に異なる提案?
誰かが以前にこのようなことを試みて、私を正しい方向に向けることができましたか?
追加:後で、lile PhantomJSを使用して、シングルページアプリをクロール可能にします。クローラーのこの出力は、理想的にはS3ストレージでもホストする必要があります。