1

S3 で Web サイトをホストしています。私のローカルホストでは、mySQL をデータベースとして使用する PHP Rest API の上で backboneJS を使用しています。

そのため、Rest API をホストするために EC2 を開きましたが、これはクロスドメイン AJAX を意味することに気付きました。

index.html が S3 にある場合、EC2 を Rest API として使用するにはどうすればよいですか?

S3 のその他の DB オプションは何ですか?

どうもありがとう、

4

1 に答える 1

3

JavaScript は S3 から提供される Web ページで実行されており、EC2 で実行しているサーバーから REST API にアクセスする必要があります。Web ページとサーバーが同じドメイン (たとえば、example.com) にある場合を除き、これはクロスオリジン リクエストになり、デフォルトではブラウザによって禁止されます。

解決策 1: S3 ページと EC2 サーバーを同じドメインに配置します。S3 では、S3 オブジェクト (Web ページ) を選択したアドレスで利用できるようにする静的 Web サイト ホスティングが可能です。それらと EC2 サーバーを同じドメインのアドレスに配置すると、機能します。

解決策 2: REST API サーバーでクロスオリジン要求を許可します。この EC2 サーバーを制御しているので、それを変更して、他のドメインからのページがサーバーにそのような要求を行うことを許可するよう Web ブラウザーに指示できます。これには、応答にいくつかのヘッダーを設定することが含まれ、通常はサーバーが HTTP OPTIONS 要求にも適切に応答する必要があります。それを始めるには、 CORS 仕様を参照してください。

他の DB オプションについても尋ねます。独自の EC2 サーバーを保持して REST API を提供する場合、同じまたは他の EC2 インスタンスで実行されているか、AWS RDB や AWS DynamoDB などのサービスとしてのデータベース製品のいずれかで、ほぼすべての種類のデータベースを使用できます。ただし、Web ページの JavaScript からデータベースに直接接続する場合は、HTTP API を直接提供し、CORS をサポートするサービスを使用する必要があります。RDB は HTTP API をまったく提供しておらず、DynamoDB は現時点で CORS をサポートしていないようです。そのため、どちらも機能しません。

于 2013-01-20T16:01:04.603 に答える