我正在尝试创建一个网络服务,它将发送和接收大文件,作为远程备份存储解决方案的一部分。当网络服务器收到请求时,它需要在存储数据之前进行身份验证。目前我正在考虑在标题中发送身份验证方法和正文中的实际内容。相当标准。但是我想知道,由于主体的大小,如果无法验证请求,是否可以验证标头,并可能在完全接收主体之前响应请求/断开连接?我还没有开始实施,但我倾向于使用 Golang 实现。前面会有一个 nginx 服务器,以防万一。编辑:也许我在最初的问题中还不够清楚,但主要焦点应该是:是否有可能在接收整个有效负载之前确定请求是否经过身份验证,如果不是这种情况,可能会断开连接/响应?就像.. 是否可以将请求解释为流,您可以在其中仅对第一部分进行操作,即使有效负载的其余部分尚未到达。对困惑感到抱歉。
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
如果您将文件作为请求正文发布,则可以使用 auth 标头进行验证,而无需等待文件完全上传。
然后,您可以使用 io.Copy 从请求正文复制到文件。
_, err := io.Copy(someFile, req.Body)
不要使用“multipart/form-data”,如果你这样做,http pkg 会妨碍你。将文件作为正文发布将使您可以以流的形式访问请求正文的内容,而 io.Copy 将以合理的方式管理文件的副本。
LEATH
TA贡献1936条经验 获得超6个赞
我想知道,由于正文的大小,如果无法验证请求,是否可以对标头进行身份验证,并可能在完全接收正文之前响应请求/断开连接?
这就是身份验证的工作方式:在获取请求的 url之前验证用户。
您可以通过任何身份验证中间件来完成,例如:
abbot/go-http-auth和 http 标头
p/goauth2和基于文件的缓存凭据
更多关于“ Go web 应用程序的最终用户身份验证”中的身份验证替代方案。
- 3 回答
- 0 关注
- 185 浏览
添加回答
举报
0/150
提交
取消