一号优惠经验分享网
51福利网的各种薅羊毛福利经验笔记

海洋cms自带的dplayer播放自己的资源。出现跨域错误

所有线路,手机和电脑都不能播放,不知都啥原因,暂时之前的自制ck播放器播放M3U8突然不能播放了。换cms自带的dplayer播放了。。

播放自己资源时候有如下错误提示:

51福利网
Access to XMLHttpRequest at 'https://dy.wudidiany.top/aaa/aa/aa/b7213213/index.m3u8' from origin 'https://www.51wddy.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

核心结论:这是跨域资源共享(CORS)限制导致的请求被拦截,前端无法直接访问目标 m3u8 视频资源。

关键原因

  1. 浏览器的同源策略禁止不同域名(51wddy.com 和 wudidianying.top)直接交互数据。
  2. 目标服务器(wudidianying.top)未返回 Access-Control-Allow-Origin 响应头,未授权前端域名访问。
  3. m3u8 通常是视频分片文件,跨域限制是服务器层面的安全配置,前端无法单独绕过。

解决方向

  • 前端方案:通过代理服务器转发请求(如 Nginx 反向代理、后端接口中转),让请求从同源域名发出。
  • 服务器方案:目标服务器配置 CORS 规则,添加 Access-Control-Allow-Origin: https://www.51wddy.com(或 * 允许所有域名)。
  • 替代方案:若无法修改服务器配置,可更换同域名下的视频资源链接,或使用支持跨域的视频分发服务。

最后解决方法是:

可以提供一个通用的 Nginx 配置代码,如果你是某个网站的管理员,可以在自己的服务器上添加这些配置,以允许其他域名跨域访问你的资源。

通用的 Nginx CORS 授权配置

将以下代码添加到你的 Nginx 配置文件中(通常是在 server 块内):

# 允许所有域名跨域访问(不推荐在生产环境中使用)
add_header Access-Control-Allow-Origin *;

# 允许指定的域名跨域访问(推荐)
# add_header Access-Control-Allow-Origin https://www.51wddy.com;

# 允许的请求方法
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';

# 允许的请求头
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

# 允许发送 Cookie(如果需要)
add_header Access-Control-Allow-Credentials 'true';

# 处理 OPTIONS 预检请求
if ($request_method = 'OPTIONS') {
    return 204;
}

配置说明

  1. Access-Control-Allow-Origin
    • *:允许所有域名访问。这是最宽松的配置,适合开发环境或公开的 API,但不推荐在生产环境中使用,因为它会带来安全风险。
    • https://www.51wddy.com:只允许 www.51wddy.com 这个域名访问。这是最安全、最推荐的配置方式。
  2. Access-Control-Allow-Methods:指定允许的 HTTP 请求方法。
  3. Access-Control-Allow-Headers:指定允许的自定义请求头。
  4. Access-Control-Allow-Credentials:如果你的请求需要携带 Cookie 或 HTTP 认证信息,需要将其设置为 true
  5. if ($request_method = 'OPTIONS'):这是处理预检请求(Preflight Request)的关键。当浏览器发起一个复杂的跨域请求时,会先发送一个 OPTIONS 请求来询问服务器是否允许该跨域请求。服务器需要对此做出响应,通常返回 204 No Content

如果用了反向代理,需要添加到反向代理中,直接上反向代理配置文件

#PROXY-START/

# 1. 处理媒体文件的反向代理,并添加 CORS 配置
location ~* \.(jpg|png|ts|m3u8|gif|jpeg|ttf|webp|woff|woff2|ico)$ {
    # CORS 配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    # 处理 OPTIONS 预检请求
    if ($request_method = 'OPTIONS') {
        return 204;
    }

    # 反向代理配置
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_pass https://反向代理域名.com;

    # 缓存配置
    proxy_cache cache_one;
    proxy_cache_valid 60d;
    proxy_ignore_headers Cache-Control;
    add_header X-Cache "$upstream_cache_status from $server_addr";
}

# 2. 处理所有其他请求的反向代理,并添加 CORS 配置
location / {
    # CORS 配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    # 处理 OPTIONS 预检请求
    if ($request_method = 'OPTIONS') {
        return 204;
    }

    # 反向代理配置
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_pass https://反向代理域名.com;

    # 超时配置
    proxy_read_timeout 3000s;
    proxy_connect_timeout 750s;
}

#PROXY-END/

播放设置,播放错误,

一号优惠 · 51福利网薅羊毛福利具有时效性,如已失效,请留言
文章名称:《海洋cms自带的dplayer播放自己的资源。出现跨域错误》-一号优惠 · 51福利网
免责申明:本站所有活动信息均来自网络,如有失效、违规、不实或侵权,请联系我们删除。谢谢

评论 抢沙发

一号优惠经验分享网最新最全薅羊毛,现金红包线报网

一号优惠经验分享网提供每日最新内部优惠,薅羊毛活动,现金红包领取,免费福利和网赚福利手机赚钱线报,打造中国最受欢迎的网赚信息发布平台!51福利网

51联盟线报群赚钱·合作·帮助

登录

找回密码

注册