ssl - 使用 API 构建应用程序

标签 ssl web-applications architecture

我目前正在开发一个允许客户下订单的网络应用程序。

我选择处理应用程序结构的方式是将应用程序拆分为两个子应用程序:

  • 1 个仅提供 json 内容的后端应用程序(API)
  • 1 个前端应用程序(在我的例子中是 AngularJS),它采用 API url 作为配置并提供用户内容

现在在服务器上,我为测试所做的是创建 2 个虚拟主机:

  • app.com
  • api.app.com

并将 API 链接到前端应用。

问题是所有内容都将通过 https 提供,在当前设置中,我需要购买 2 个 SSL 证书或 1 个通配符证书。

第二种解决方案是在前端应用程序上创建一个子目录(比如 /api)并将后端应用程序复制到其中。优点是只获得一个 SSL 证书并将所有内容都放在同一目录中;/api 将是一个 .htaccess 重定向到后端 api。

我认为“最干净”的解决方案是完全拆分这两个应用程序并为两者获得通配符 SSL 证书,但我想听听是否有人有一些经验,看看一个解决方案是否比另一个更好。

最佳答案

合并的好处是你可以避免 CORS . CORS 并没有那么糟糕,但它是另一个并发症。话虽这么说,如果你想将它暴露给外界(允许其他网页使用它),你可能还是想经历这个过程。

如果您不希望将您的 API 实际公开给第三方,而只是将您的层分开,那么我会考虑合并甚至代理。我使用此架构将我的服务完全置于防火墙之后,并使用 mod_proxy或类似的东西通过我的网络服务器为我的 API 提供服务。这很有用,因为它限制了 API 的公开范围,并一次性解决了 CORS 问题。

如果你真的想在你的网络服务器和你的 API 服务器之间使用 SSL,你可以在你的网络服务器和你的 API 服务器之间做一个自生成的客户端证书。

关于ssl - 使用 API 构建应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167552/

相关文章:

Javamail java.security.cert.CertPathValidatorException 从 pop3 接收邮件时

java - 在 SSL 连接中设置套接字超时

Java - java Web 应用程序中文件的相对路径

events - 事件驱动架构……无限循环

android - 整洁架构 : share same models/entities with different layers

ruby-on-rails - 如何为使用 SSL 的站点访问者更改 Rails View 代码?

php - laravel4发送邮件报错 'this stream does not support SSL/crypto'

iOS:通过网络应用程序播放 RTSP 播放器

json - ARM模板: How can i ensure Web App slots do not get the Web App Settings deployed over?

architecture - 是否有任何编程语言的变量类型大小(以位为单位)取决于平台(32 位与 64 位)?