SpringMVC在做静态资源映射的时候需要注意的问题

本文讲述了在使用SpringMVC时遇到的静态视频资源播放问题,问题在于缺少range请求支持。通过对比发现,正确的content-type应当为'video/mp4',但即使设置正确,视频仍无法播放。最终解决方案是通过nginx代理静态资源,实现range请求的支持,使得视频能在移动设备上正常播放。此外,还提到了Spring 4.2以上版本对http byte-range请求的内置支持。
摘要由CSDN通过智能技术生成

发现问题

最近在开发一个小网站,需要支持在页面上播放视频资源(暂时没考虑流媒体服务器神马的,能正常播放就行)。于是在前端使用了HTML5的video标签。并且配合projekktor播放器来实现。因为还在开发阶段,视频资源的映射就直接交给SpringMVC本身了。

video 的src如localhost:8080/web/resources/videos/aaaa.mp4 这样。同时在Spring中配置mvc:resources 映即可。诡异的事情来了,O_O……

在PC端浏览器打开的时候,视频可以正常播放,但是不能快进快退,使用移动设备iPhone之类的就连视频都播放不了。显示一个大大的叉。。。

问题查找

正好,之前同事有一套系统可以正常播放视屏,使用本地的projekktor直接播放远程资源发现一切正常。于是就排出了前端脚本的问题。

接下来对比了一下Http请求,在视频的Response中,发现了两个主要区别:1、context-type我这是’video/mp4;charshet=UTF-8’,而对方是’video/mp4’。2、对方的Response有range请求,而我的没有。

context-type

charset是我的SpringMVC的web.xml中设置了forceEncoding=true,并且把URIEncoding设置为了UTF-8。因此我单独写了个Controller,输出测试文件,同时将response的context-type改为’video/mp4’。此时再次调用projekktor直接请求这个地址,得到了’video/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值