• 原森林之家(foresthouse.cn)改为走私范(zousifan.com),只是改个名内容不变。
  • 网站图片自建立开始到19年全部丢失,血的教训时刻备份,多点备份!

记m3u8流媒体跨域报错:No ‘Access-Control-Allow-Origin’

心得笔记 6年前 (2019-03-27) 1840次浏览 1个评论 扫描二维码
本文最后更新于2022年7月9日,已超过 1 年没有更新,如果文章内容失效,请 反馈 给我们,谢谢!


记一次A网站调用B网站的M3U8媒体文件浏览器提示跨域报错:“Failed to load http://ceshi/ceshi.m3u8: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://ceshi.com’ is therefore not allowed access.”“Failed to load http://ceshi.com/0000.ts: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://ceshi.com’ is therefore not allowed access.”,B网站的所有M3U8文件都只能使用B网站的域名访问,其它域名无法访问播放不了,在网上找了N多方法卡在了httpd.conf文件的“#LoadModule headers_module modules/mod_headers.so”参数上面我没有把#去掉导致再怎么设置也不行因为没有开启apache头信息自定义模块。只有开启了头信息自定义模块才能识别你自定义的信息呀……

说下方法(均已测试)添加的代码或文件都是在目标服务端不是访问端。

一、如果服务器是Apache

1、打开配置文件“httpd.conf”搜索“LoadModule headers_module modules/mod_headers.so”把前面的“#”号去掉,这是第一步也是必须的一步。;

2.1、打开配置文件“vhosts.conf”找到域名所在的地方添加:“Header set Access-Control-Allow-Origin *”即可,示例如下:

<VirtualHost *:80>
    DocumentRoot "H:\www"
    ServerName ceshi.com
    ServerAlias www.ceshi.com
  <Directory "H:\www">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
      Header set Access-Control-Allow-Origin *
  </Directory>
</VirtualHost>
2.2、如果配置不好怕搞坏了可以省略第2步,但第一步一定要做,然后直接在网站所在的根目录中加入以下.htaccess文件,文件内容为:
<IfModule mod_setenvif.c>  
    <IfModule mod_headers.c>  
        <FilesMatch "\.(m3u8|ts)$">  
            SetEnvIf Origin ":" IS_CORS  
            Header set Access-Control-Allow-Origin "*" env=IS_CORS  
        </FilesMatch>  
    </IfModule>  
</IfModule>

二、如果服务器是Nginx

1.1、如果安装了宝塔面板则在location的最下面大括号的上面加入“add_header Access-Control-Allow-Origin *;”即可;

1.2、或者是打开“nginx.conf”文件修改,代码如下:

<span class="hljs-attribute">location</span> <span class="hljs-regexp">~* \.(m3u8|ts)$</span> {
     <span class="hljs-attribute">add_header</span> Access-Control-Allow-Origin *;
}
或者是:
<span class="hljs-attribute">location</span> / {  
  <span class="hljs-attribute">add_header</span> Access-Control-Allow-Origin *;  
}
IIS服务器没有测试,至于网上说的“crossdomain.xml”我是研究了好久可能我太菜了没研究好也弄不透,根本就没用,而且我觉得这个东西并不好人家可以访问得到能看到里面是啥东西。比如淘宝的:
<cross-domain-policy>
<allow-access-from domain="*.taobao.com"/>
<allow-access-from domain="*.taobao.net"/>
<allow-access-from domain="*.taobaocdn.com"/>
<allow-access-from domain="*.tbcdn.cn"/>
<allow-access-from domain="*.alicdn.com"/>
</cross-domain-policy>
百度的:
<cross-domain-policy>
<allow-access-from domain="*.baidu.com"/>
<allow-access-from domain="*.bdstatic.com"/>
<allow-http-request-headers-from domain="*.baidu.com" headers="*"/>
<allow-http-request-headers-from domain="*.bdstatic.com" headers="*"/>
</cross-domain-policy>
腾讯的:
<cross-domain-policy>
<allow-access-from domain="*.qq.com"/>
<allow-access-from domain="*.gtimg.com"/>
</cross-domain-policy>

版权所有丨如未注明 , 均为原创丨本网站采用 BY-NC-SA 协议进行授权 , 转载请注明 出处!
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
    仅用来给您发送回复提醒。不会公开!
  • 网址
(1)个小伙伴在吐槽
  1. 文章不错非常喜欢,支持
    头条新闻2019-05-13 19:35 回复来自天朝的朋友 谷歌浏览器 Windows 7