百度云web播放器cyberplayer的flv播放地址一定要支持跨域访问如何设置

cyberplayer,
官方demo
百度云web播放器:
Cyberplayer3.0 Demo

http://cyberplayer.bcelive.com/demo/new/index.html

百度云web播放器cyberplayer的flv播放地址一定要支持跨域访问如何设置

一、问题
按照上面的demo,如果:域名A, 访问域名B的flv文件时,
出现:加载失败,不能播放当前文件。
查看,控制台:
已拦截跨源请求:同源策略禁止读取位于 http://域名B.../.flv 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

二、解决方法
需要在域名B的文件所在的服务器nginx服务器中配置。
oneinstack的lnmp为例,
在 /usr/local/nginx/conf/vhost/域名B.conf 中添加:

    location ~* \.(flv)$ {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
     }

再重启nginx.
service nginx restart;

三、 解释

  1. Access-Control-Allow-Origin

服务器默认是不被允许跨域的。给Nginx服务器配置Access-Control-Allow-Origin *后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。

  1. Access-Control-Allow-Headers 是为了防止出现以下错误:

Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了"application/json"的类型请求导致的。这里涉及到一个概念:预检请求(preflight request),请看下面"预检请求"的介绍。

  1. Access-Control-Allow-Methods 是为了防止出现以下错误:

Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

加入QQ PHP技术问答群 (群号:292626152),有关cyberplayer的问题,可相互交流。

猜你喜欢

转载自blog.51cto.com/phpervip/2479344