加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – HTTP 307的文件上传

发布时间:2020-12-15 01:07:36 所属栏目:Java 来源:网络整理
导读:我正在编写一个Spring控制器来处理来自客户端的HTTP PUT请求,并生成S3预先签名的url并发出HTTP 307状态(Temp重定向)代码.所以基本上我正在验证客户端,如果成功,那么我要求他写入s3文件夹.客户端可以写入已签名的URL位置. 现在我担心的是客户端必须上传两次.

我正在编写一个Spring控制器来处理来自客户端的HTTP PUT请求,并生成S3预先签名的url并发出HTTP 307状态(Temp重定向)代码.所以基本上我正在验证客户端,如果成功,那么我要求他写入s3文件夹.客户端可以写入已签名的URL位置.

现在我担心的是客户端必须上传两次.一旦到我的应用程序服务器再到s3,所以操作将花费两倍的时间.

我的理解是否正确?在这种情况下,客户端实际上是否写了2次?或者客户端是否足够智能,只是首先推送部分有效负载,则推送整个负载?

我读到了关于HTTP 100状态代码,但看起来app server / tomcat已经发出它并且不在我的控制之下.

这是我的弹簧控制器

@RequestMapping("/upload")
public ResponseEntity

如何防止clint将整个有效负载上传到我的应用服务器?

最佳答案

So my understanding correct?

答案是肯定的.服务器将在读取包括正文的完整请求后发送PUT请求的响应.当您的客户端将重复该请求时,在响应307(Temporary Redirect)中,它将像一个新的http请求.

此方法还应考虑使用规范中的307响应代码(见下文)的重点.

If the 307 status code is received in response to a request other
than GET or HEAD,the user agent MUST NOT automatically redirect the
request unless it can be confirmed by the user,since this might
change the conditions under which the request was issued.

在点上

如何防止客户端将整个有效负载上传到我的应用服务器?
您可以从控制器上传到后台的s3,并将重定向响应(301?)指向一个URL,该URL将返回上传请求的状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读