换了模板使用了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.

跨域的错误信息

看了很多人说的解决方法,大部分都说的是phpheader头,其实都是没有用的。

因为跨域需要前后端配合处理 不是任何一端能独立完成的

那么针对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

然后就不会出现跨域的现像了

6 条评论

  1. jclser
    2020-04-21 19:39
    回复

    用$_SERVER['SERVER_NAME'] 如果绑定的域名有多个,那么它只会读取第一个绑定的域名地址,$_SERVER['HTTP_HOST']就没有这个问题、。

    1. Nroy
      2020-04-23 13:17
      回复

      不会的呢,你理解错了 这个变量只是获取目前访问站点所使用的域名,和什么第几个没关系,php超全局变量和你Web服务器所绑定的有几个域名,顺序什么的是两码子事,还有你说的这两个变量的差别是,一个显端口一个不显端口( •̀ ω •́ )✧

  2. 初夏阳光
    2020-03-13 20:30
    回复

    Aplayer-Typecho 的 Meting 好像解析不出来 QQ音乐的了。我看不懂代码直接用 metowolf/Meting 里最新的 Meting.php 替换好像也不行。

    1. Nroy
      2020-03-13 23:15
      回复

      可能是因为插件上游不支持了

      1. 初夏阳光
        2020-04-07 12:26
        回复

        悄咪咪的说我直接用插件示例的 meto 大佬的接口就可以解析出来 QQ 音乐 (#°Д°)

        1. jclser
          2020-04-21 19:33
          回复

          他那个接口,手机端迷一样的显不出播放器。

添加新评论