下载前验证请求

我正在尝试创建一个网络服务,它将发送和接收大文件,作为远程备份存储解决方案的一部分。

当网络服务器收到请求时,它需要在存储数据之前进行身份验证。

目前我正在考虑在标题中发送身份验证方法和正文中的实际内容。相当标准。

但是我想知道,由于主体的大小,如果无法验证请求,是否可以验证标头,并可能在完全接收主体之前响应请求/断开连接?

我还没有开始实施,但我倾向于使用 Golang 实现。前面会有一个 nginx 服务器,以防万一。

编辑:

也许我在最初的问题中还不够清楚,但主要焦点应该是:是否有可能在接收整个有效负载之前确定请求是否经过身份验证,如果不是这种情况,可能会断开连接/响应?

就像.. 是否可以将请求解释为流,您可以在其中仅对第一部分进行操作,即使有效负载的其余部分尚未到达。

对困惑感到抱歉。


慕妹3242003
浏览 186回答 3
3回答

守着星空守着你

如果您将文件作为请求正文发布,则可以使用 auth 标头进行验证,而无需等待文件完全上传。然后,您可以使用 io.Copy 从请求正文复制到文件。_, err := io.Copy(someFile, req.Body)不要使用“multipart/form-data”,如果你这样做,http pkg 会妨碍你。将文件作为正文发布将使您可以以流的形式访问请求正文的内容,而 io.Copy 将以合理的方式管理文件的副本。

LEATH

我想知道,由于正文的大小,如果无法验证请求,是否可以对标头进行身份验证,并可能在完全接收正文之前响应请求/断开连接?这就是身份验证的工作方式:在获取请求的 url之前验证用户。您可以通过任何身份验证中间件来完成,例如:abbot/go-http-auth和 http 标头p/goauth2和基于文件的缓存凭据更多关于“ Go web 应用程序的最终用户身份验证”中的身份验证替代方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go