meting 音乐播放插件多域名跨域解决方法
换了模板使用了
meting
音乐播放插件由于我解析了两个域名 一个是顶级域名nnnuo.com,还有个www二级域名。
但是meting
插件在后台设置云解析地址
的时候只要是使用其中一个域名另外一个域名访问https://www.nnnuo.com/music.html都是会出现
Access to XMLHttpRequest at '请求链接' from origin 'https://nnnuo.com'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin'
header is present on the requested resource.
跨域的错误信息
看了很多人说的解决方法,大部分都说的是php
加header
头,其实都是没有用的。
因为跨域需要前后端配合处理 不是任何一端能独立完成的
那么针对meting
的跨域问题,既然我是解析的两个域名,那使用其中某个域名访问网站时就使用那个域名去请求;
解决方法:
在meting插件的根目录下 Plugin.php 文件第215行修改为以下代码
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
{
$protocol = "https://";
}else{
$protocol = "http://";
}
$url = $protocol . $_SERVER['SERVER_NAME'];
$api = $url . Typecho_Widget::widget('Widget_Options')->plugin('Meting')->api;
注意!是修改不是新增
然后在后台meting
插件配置里面修改云解析地址
删除协议与域名部分
例如:https://www.nnnuo.com/action/metingapi?server=:server&type=:type&id=:id&auth=:auth&r=:r
修改为:/action/metingapi?server=:server&type=:type&id=:id&auth=:auth&r=:r
然后就不会出现跨域的现像了
问一下,你这个音乐播放插件自己修复了网易云音乐的歌单了吗
用$_SERVER['SERVER_NAME'] 如果绑定的域名有多个,那么它只会读取第一个绑定的域名地址,$_SERVER['HTTP_HOST']就没有这个问题、。
不会的呢,你理解错了 这个变量只是获取目前访问站点所使用的域名,和什么第几个没关系,php超全局变量和你Web服务器所绑定的有几个域名,顺序什么的是两码子事,还有你说的这两个变量的差别是,一个显端口一个不显端口( •̀ ω •́ )✧
Aplayer-Typecho 的 Meting 好像解析不出来 QQ音乐的了。我看不懂代码直接用 metowolf/Meting 里最新的 Meting.php 替换好像也不行。
可能是因为插件上游不支持了
悄咪咪的说我直接用插件示例的 meto 大佬的接口就可以解析出来 QQ 音乐 (#°Д°)
他那个接口,手机端迷一样的显不出播放器。