You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CORS阻止他人嵌入我的HLS视频以减少服务器负载?

阻止跨站嵌入HLS视频的解决方案

要阻止他人在自己的网站嵌入你的HLS视频,同时限制浏览器从你的服务器下载TS片段,你可以通过以下几种方式实现——核心是限制只有你的域名能发起合法请求,以此降低不必要的服务器负载:

1. 配置CORS策略限制请求来源

浏览器在跨站加载资源时会触发CORS机制,你可以在服务器端设置响应头,仅允许你的域名发起请求。

不同服务器的配置示例:

  • Nginx:在对应server或location块中添加:
# 允许指定域名的跨域请求
add_header Access-Control-Allow-Origin "https://your-domain.com";
# 允许HLS所需的请求方法
add_header Access-Control-Allow-Methods "GET, OPTIONS";
# HLS播放依赖Range头,必须允许
add_header Access-Control-Allow-Headers "Range";
  • Apache:在.htaccess或站点配置文件中添加:
Header set Access-Control-Allow-Origin "https://your-domain.com"
Header set Access-Control-Allow-Methods "GET, OPTIONS"
Header set Access-Control-Allow-Headers "Range"

注意:不要使用通配符*作为Access-Control-Allow-Origin的值,否则会允许所有跨站请求,完全起不到限制作用。

2. 验证Referer请求头作为补充

CORS对简单GET请求可能不会触发预检,这时候可以通过检查Referer头来过滤非你的域名发起的请求。

Nginx配置示例:

# 仅允许来自你的域名的请求,空Referer(比如直接在地址栏访问)可根据需求调整规则
if ($http_referer !~* "^https://your-domain.com/.*$") {
    return 403;
}

注意:Referer头可能被用户手动禁用,所以这个方法只能作为CORS的补充,不能单独依赖。

3. 为资源添加临时签名(进阶)

如果想进一步提高盗用门槛,可以给m3u8播放列表和TS片段生成带有效期的签名:

  • 服务器端生成包含请求路径、过期时间的签名,将其附加在资源URL上(例如playlist.m3u8?sign=abc123&expire=1699999999)
  • 当请求到达服务器时,验证签名的合法性和过期时间,只有通过验证的请求才返回内容

这种方式能有效防止他人长期复用你的资源URL,即使Referer被伪造,签名过期后也无法访问。

额外提示

  • Safari对HLS的CORS要求更严格,务必确保服务器正确响应OPTIONS预检请求,且允许Range请求头,否则可能导致视频无法正常播放。
  • 这些方法只能加大跨站盗用的难度,无法完全阻止他人下载内容后自行托管——但这正是你不在意的场景,核心目标(减少服务器负载)可以达成。

内容的提问来源于stack exchange,提问作者s_joe77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:25:21