解决视频不能上传,衍生到了 cors跨域问题,跨域问题又衍生到了 视频点播问题,这是我们最近的甲方黑曼巴知识付费即将上线遇到的问题,这个系统是购买了crmeb知识付费系统并且进行深度二开的。
表面上 是个跨域问题
上传视频 提示错误 为 Access to XMLHttpRequest at ‘https://heimanbaoss.oss-cn-beijing.aliyuncs.com/‘ from origin ‘https://www.blackmamba.ltd‘ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
plupload.full.min.js:14 POST https://heimanbaoss.oss-cn-beijing.aliyuncs.com/ net::ERR_FAILED
实际应该不对,因为按道理 我们上传图片都可以 为什么上传视频就不可以呢
以下是常规解决跨域问题,但是在实际操作中是不可能这样做的。
遇到的错误是由于浏览器安全策略(CORS)导致的跨域问题。当您从网站blackmamba.ltd
向阿里云OSS(heimanbaoss.oss-cn-beijing.aliyuncs.com
)上传文件时,OSS服务器没有返回正确的CORS响应头。
解决方案
1. 配置阿里云OSS的CORS规则
您需要在阿里云OSS控制台为您的Bucket设置CORS规则:
- 登录阿里云OSS控制台
- 选择您的Bucket(heimanbaoss)
- 点击”权限管理” > “跨域设置”
- 点击”设置”添加新的CORS规则:
来源:https://www.blackmamba.ltd
允许Methods:POST, GET, PUT, DELETE, HEAD
允许Headers:*
暴露Headers:ETag, x-oss-request-id
缓存时间:3600
2. 检查CRMeb的上传配置
确保CRMeb系统中的OSS配置正确:
- 检查Endpoint是否正确(
oss-cn-beijing.aliyuncs.com
) - 确认AccessKey ID和AccessKey Secret正确
- 确认Bucket名称(heimanbaoss)拼写正确
3. 临时解决方案(不推荐)
如果您需要快速测试,可以暂时:
- 在Chrome浏览器启动时添加
--disable-web-security
参数(仅用于测试) - 或安装CORS解除插件(仅开发环境使用)
4. 检查上传代码
确保您的上传请求包含正确的headers:
headers: {
'Access-Control-Allow-Origin': 'https://www.blackmamba.ltd',
'Content-Type': 'multipart/form-data'
}
果然 我们在配置中发现
既然如此卓伊凡就到阿里云官网去找这个服务
您遇到的问题确实是因为未正确配置阿里云视频点播服务(VOD)导致的。阿里云视频点播(Video on Demand, VOD)是阿里云提供的专业音视频上传、存储、转码、分发和播放的一站式解决方案。
阿里云视频点播(VOD)与OSS的区别
- OSS(对象存储) :单纯的文件存储服务,没有视频专用处理功能
- VOD(视频点播) :专为视频设计的服务,包含:
-
- 自动转码(多种分辨率/格式)
- 内容审核
- 视频加密
- 播放统计
- 全球加速分发
配置阿里云VOD的完整步骤
第一步:开通阿里云VOD服务
- 登录阿里云VOD控制台
- 开通视频点播服务(首次使用需要开通)
- 完成企业实名认证(视频服务需要)
第二步:获取必要配置信息
- 在VOD控制台获取:
-
- 接入区域:如
cn-shanghai
- 访问密钥:AccessKey ID和AccessKey Secret
- 默认存储地址:在”媒体管理”>”存储管理”中查看
- 接入区域:如
第三步:CRMeb后台配置
- 登录CRMeb后台管理系统
- 进入”系统设置”>”视频点播配置”或类似菜单
- 填写以下信息:
服务提供商:阿里云VOD
Region ID:cn-shanghai (根据您实际的区域)
AccessKey ID:您的阿里云AccessKey
AccessKey Secret:对应的密钥
存储位置:默认或您指定的存储路径
回调地址:您的域名/callback/vod (如有需要)
第四步:配置上传域名
- 在VOD控制台进入”上传配置”>”上传域名”
- 添加或绑定您的域名(如
vod.blackmamba.ltd
) - 完成CNAME解析(需要DNS配置)
第五步:设置转码模板(可选但推荐)
- 进入”转码设置”>”转码模板”
- 创建适合您业务的转码模板(如:高清、标清)
- 设置默认转码模板组
第六步:配置CORS跨域访问
- 进入”全局设置”>”安全设置”
- 配置CORS规则:
-
- 来源:
https://www.blackmamba.ltd
- 允许方法:GET, POST, PUT
- 允许Headers:*
- 缓存时间:3600
- 来源:
常见问题排查
- 上传失败:
-
- 检查AccessKey是否正确
- 确认服务区域(Region)是否匹配
- 检查网络连接是否正常
- 跨域问题:
-
- 确保CORS配置已保存并生效
- 清除浏览器缓存后重试
- 视频无法播放:
-
- 检查转码模板是否配置正确
- 确认播放器SDK是否正确集成
最佳实践建议
- 为视频服务单独创建RAM子账号,不要使用主账号AccessKey
- 设置存储生命周期规则,自动清理临时文件
- 启用内容审核功能,避免违规内容
- 配置CDN加速,提升用户观看体验
果然 如此 原来要在这里配置这个,不过我们参考了相关文档发现,我们关闭了vod,按道理我们就是用的是云储存,那么我们在云储存配置下跨域试试。
我们进入跨域设置,按我们的要求设置
来源:https://www.blackmamba.ltd
允许Methods:POST, GET, PUT, DELETE, HEAD
允许Headers:*
暴露Headers:ETag, x-oss-request-id
缓存时间:3600
搞定解决
其实都已经研究到这里了 我们应该 开始多对跨域更加了解更好。