h5的video标签src使用http协议的url却一直重定向到https的

问题描述:

在开发web网站的时候,我们网站的网址是https协议的网址,但是当我使用到h5的video标签时,后端提供给我的是http协议的资源的url,于是出现了视频加载错误的情况,然后我打开chrome的network看了一下,发现首次发送的http的request返回了307状态码(重定向的状态码)于是浏览器重新请求重定向后的url,结果请求失败(找不到资源)。查看了一下重定向后的url,竟然把我的http请求变成了https的请求!?具体请看图:

 

原因1: Nginx等静态资源服务器的配置问题

产生问题的原因可能是nginx等静态资源服务器配置了端口转发,使得原本的http请求重定向为https的请求,从而导致url指向的资源不存在导致加载失败。

解决办法:配置一下Nginx等资源服务器的配置,让其支持https的请求,或者停掉自动转发到https即可,具体内容百度一下就好了,网上很多办法。

原因2:视频的资源服务器和网站具有相同的顶级域名、二级域名和三级域名(本次的问题的原因)

如果你的网址是https的,在这个页面却进行了一个http的请求,此时称之为mixed-content(混合内容),因为出于安全性考虑,浏览器会进行警告或者拦截(一般来说只是警告)。如果是被拦截了,根据提示设置一下浏览器应该就好了,具体设置百度搜索应该也能查到,因为浏览器五花八门,在这里就不一一赘述了。

还有一种情况就是,比如你的网站的网址是 https://demo.com    ; 你的视频的url是  http://xxx.demo.com/xxx.mp4, 它们具有共同的demo.com,这就造成了浏览器认为这个视频资源也应该和网址一样是使用的https的协议,浏览器就会重定向你的视频url。

解决办法:更改静态资源服务器的域名或者改网站域名,使其不在一个域名下面即可。或者更改静态资源服务器支持https的资源请求,又或者更改网站域名为http即可。

### iOS H5 Video 标签黑屏解决方案 对于iOS设备上的H5页面中`<video>`标签播放视频出现黑屏的问题,有几种可能的原因以及相应的解决方法。 #### 1. 设置正确的MIME类型 服务器配置不当可能导致iOS无法识别文件格式而显示黑色屏幕。确保服务器返回正确的MIME类型,特别是针对MP4文件应设置为`video/mp4`[^1]。 #### 2. 使用Poster属性作为封面图 为了防止首次加载时出现短暂的黑屏现象,可以在HTML中的`<video>`标签内加入poster属性来指定一张图片作为视频未开始前的默认展示图像: ```html <video controls poster="/path/to/poster.jpg"> <source src="movie.mp4" type="video/mp4"> </video> ``` 这不仅提升了用户体验,还有效减少了初次渲染时可能出现的空白或纯色背景问题[^3]。 #### 3. 处理currentTime属性引起的黑屏 当尝试通过JavaScript修改`currentTime`属性实现进度条跳跃功能时,在某些情况下可能会触发iOS系统的安全机制从而造成画面卡死于某一帧甚至完全变暗的情况。为了避免这种情况发生,建议采用如下方式调整时间轴位置: - 不要立即改变当前播放时刻; - 等待视频自然缓冲至接近目标秒数后再执行seek操作; 具体代码示例如下所示: ```javascript let videoElement = document.querySelector('video'); // 延迟一段时间再进行seekTo动作 setTimeout(() => { videoElement.currentTime = desiredTime; }, 500); ``` 此外还可以监听canplay事件确认资源已准备好之后才允许用户交互控制播放器行为[^2]。 #### 4. 应对外部浏览器兼容性差异 部分场景下即使解决了上述所有潜在因素仍然存在个别机型表现异常的现象。此时可考虑引导最终使用者切换至Safari或其他主流移动Web客户端访问应用内容以获得更稳定的服务体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值