1

我在 S3 上托管我的网站。在我的本地主机上,我在使用 mySQL 作为数据库的 PHP Rest API 之上使用了主干JS。

所以我打开了一个 EC2 来托管我的 Rest API,但后来意识到这意味着跨域 AJAX。

如果我的 index.html 位于 S3 上,我如何将 EC2 用作 Rest API?

S3 的其他数据库选项是什么?

非常感谢,

4

1 回答 1

3

您的 JavaScript 正在 S3 提供的网页上执行,它必须从您在 EC2 上运行的服务器访问 REST API。除非网页和服务器在同一个域中(例如 example.com),否则这将是一个跨域请求,默认情况下被浏览器禁止。

解决方案 1:让您的 S3 页面和您的 EC2 服务器在同一个域中。S3 允许静态网站托管,使您的 S3 对象(网页)在您选择的地址可用。将它们和您的 EC2 服务器放在同一个域中的地址,它就可以工作。

解决方案 2:让您的 REST API 服务器允许跨域请求。由于您控制此 EC2 服务器,因此您可以对其进行修改以告诉 Web 浏览器允许来自其他域的页面向您的服务器发出此类请求。这涉及在您的响应中设置多个标头,并且通常要求您的服务器也正确响应 HTTP OPTIONS 请求。请参阅CORS 规范以开始使用。

您还询问其他数据库选项。如果您保留自己的 EC2 服务器来提供 REST API,它几乎可以使用您喜欢的任何类型的数据库,无论是在相同或其他 EC2 实例上运行,还是在 AWS RDB 或 AWS DynamoDB 等数据库即服务产品上运行。但是,如果您想直接从网页的 JavaScript 连接到数据库,则必须使用直接提供 HTTP API 并支持 CORS 的服务。RDB 根本不提供 HTTP API,而 DynamoDB 目前似乎不支持 CORS,因此它们都不起作用。

于 2013-01-20T16:01:04.603 回答