【发布时间】:2016-08-03 05:02:41
【问题描述】:
我在尝试确定什么是我正在尝试构建的东西的最佳解决方案时遇到了一些问题。
在应用程序最简单的形式中,我有一个前端服务器,它允许用户上传与他们的帐户相关联的文件,例如视频或图像。上传文件表单将上传请求发布到前端服务器,然后前端服务器使用反向代理将请求直接传递到存储服务器的 API (https://www.example.com/users/username/upload)。
我目前坚持的是,试图找出验证存储服务器 API 收到的请求实际上是从前端服务器的反向代理发送的最佳方法,而不是某人只是向存储服务器的 API 端点发送一个直接的 post 请求。
任何建议将不胜感激!
【问题讨论】:
-
您可以从前端服务器发送某种令牌来验证请求来自正确的服务器。
-
嘿@DhanushGopinath,感谢您的回复。我之前创建了一个会话,该会话创建了一个 CSRF 令牌,该令牌在存储服务器端通过同一个客户端的会话进行验证,但是在我传递实际之前创建一个令牌并通过 tcp 发送它会更好吗?请求,等待来自存储服务器的包含正确令牌的 ACK,如果正确,则代理文件上传请求?
-
我按照你提到的第一种方式做。我编写了一个 HTTP 处理程序来对其进行身份验证,并且只有当它有效时,我才会将请求传递给实际的处理程序。第二种方法也应该没问题,除了每个调用每次都需要发送 2 个请求。
-
您控制存储服务器还是第三方服务?它是否需要暴露给可以直接调用它的人?关于部署的更多细节将有助于解决这个问题。
-
嘿@jxstanford,我确实控制着存储服务器。我是分布式计算的新手,所以不确定任何最佳实践。存储服务器不必暴露,但我不确定如何阻止它来自我自己的服务器以外的请求。抱歉,所有这些都非常模糊,这更像是一个学习挑战,尝试构建可扩展的可扩展应用程序。
标签: go storage distributed-computing api-design server-communication