我在 S3 上托管我的网站。在我的本地主机上,我在使用 mySQL 作为数据库的 PHP Rest API 之上使用了主干JS。
所以我打开了一个 EC2 来托管我的 Rest API,但后来意识到这意味着跨域 AJAX。
如果我的 index.html 位于 S3 上,我如何将 EC2 用作 Rest API?
S3 的其他数据库选项是什么?
非常感谢,
我在 S3 上托管我的网站。在我的本地主机上,我在使用 mySQL 作为数据库的 PHP Rest API 之上使用了主干JS。
所以我打开了一个 EC2 来托管我的 Rest API,但后来意识到这意味着跨域 AJAX。
如果我的 index.html 位于 S3 上,我如何将 EC2 用作 Rest API?
S3 的其他数据库选项是什么?
非常感谢,
您的 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,因此它们都不起作用。