共计 628 个字符,预计需要花费 2 分钟才能阅读完成。
最近在项目中需要做一个文件上传的功能,使用的组件是 element
ui 的 upload 组件,在测试的过程中发现后端返回的状态是 308 永久重定向,上传的过程中不仅发起了上传文件本身的请求,还有一个 看起来 不相干的请求,通过查询资料终于弄清了为什么上传失败以及 308 状态码的含义
如图,是当时请求的截图:
图 1 上传请求
图 2 重定向请求
通过网上查找资料,找到了这篇文章,文章已经对 308 状态码的含义讲解得很清楚了,就是请求的地址已经被永久重定向到另一个 URI,且在请求返回的 response headers 中会有一个叫做 ”Location” 的 header 来指明被重定向的位置。
我这里上传失败的原因是接口地址本来应该是“/security/file/”,而我写成了“/security/file”,地址后面少了一个“/”,因此如图 1 所示,response headers 中的“Location”指明了被重定向的位置,也就有了图 2 中的这个请求。
这里前 2 个 file 的请求是一样的,至于为什么会出现 2 次,还没弄清原因,是因为 chrome 浏览器比较高级,会自动多尝试一次请求吗?实际上在 IE 中,只会出现一次上传的请求,后 2 次都不会出现,如图 3。而在 firefox 中,file 的请求一次,重定向资源的请求一次,如图 4 所示。
图 3 IE 中的所有请求
图 4 firefox 中的所有请求
这里还有一个没弄清的问题是图 2 中的请求实际上是后端在 Apache 中的一个配置,为什么会重定向到这里也还需要进一步确定。
正文完