抖音(极简版)项目问题整理(3) | 青训营笔记

224 阅读3分钟

DSC00769-2.jpg

这是我参与「第三届青训营 -后端场」笔记创作活动的第四篇笔记

在项目开发过程中,我们小组遇到了一些比较不知道如何下手,花了比较长时间的问题,这里整理几个和视频地址相关的问题。

feed流中URL无法定向,客户端提示视频无法播放引发的思考

当时在测试时先报URL无法定向301,后来是客户端提示视频无法播放。遂去查找资料,找到这篇文章给我梳理清楚了,这中间的区别。文章在这

URL最后结尾反斜杠(/)加与不加区别

这里先说结论:

有没有反斜杠的意义在于该url是指向一个文件还是一个目录

若结尾为/则指向/前的文件夹,反之指向这个文件。

例子:

http://xxxxx.com/fxg    指向的是网站根目录下一个名为fxg的文件
http://xxxx.com/fxg/  指向的是网站根目录下一个名为fxg的目录

对于服务器来说,如果访问的是目录,则会根据规则访问改目录下的默认文件(index.html、index.htm之类)如nginx中index指令。如访问/fxg/服务器会寻找/fxg/index.html文件(nginx里location中root/alias指令对应目录),而访问/fxg服务器则会寻找/fxg文件。

对于用户来说,在大多数情况下这两个网址没有任何区别,他们访问的都是网站 fxg 目录下的默认首页。一般用户也都知道最后一个斜杠是可有可无的,他们输入网址的时候一般都只会输入 xxxx.com/fxg

而当 Web 服务器接收到某个末尾不含斜杠的 url 请求时,例如 xxxxx.com/fxg ,这时服务器会搜索网站根目录下有没有名为 fxg 的文件,如果没有就把 fxg 当做目录处理,此时服务器会执行301永久重定向处理将/fxg重定向到/fxg/目录,然后返回 fxg 目录下的默认首页。

这在网站中比较好处理,但在项目的应用程序的服务端中若不分辨清楚,就容易导致错误。

一开始我们小组便是一直摸不清头脑,不懂如何解决这个问题。后来在了解到有这个区别后问题便迎刃而解了。

本地部署项目视频地址的问题

我们小组先是参照了demo文件中的描述,用127.0.0.1:8080/static/video_name进行访问。这在电脑端的浏览器中是可以正常访问,但在客户端中却无法访问。一开始我们以为是http解析的问题,尝试了非常多复杂的办法,但都没有解决。

后来发现这个地址应该是,部署服务器的电脑的内网地址,而不是127.0.0.1

后来仔细思考也便明白了,服务端在响应后,客户端便会得到视频的地址,再向这个地址请求视频,从而接收到视频文件并播放。但若地址是127.0.0.1的话,相当于客户端在请求手机自身本地的地址,没有响应和视频文件的传输,进而提示视频文件无法播放。