遇到过的错误:

DOMException: The play() request was interrupted by a new load request.
DOMException: Failed to load because no supported source was found.

到底这个标签的src可以跨域吗?

先看一个例子: (浏览器也有差异,IE浏览器都可以播放)

<audio id="musicplayer" preload="auto" >
<source src="m.mp3" type="audio/mpeg" id="musicsource">
</audio>
<script>
var audio =document.getElementById("musicplayer");
audio.crossOrigin = 'anonymous';
audio.src='https://fourthof5assets.s3-eu-west-1.amazonaws.com/heng-feeling-good.mp3';//可以播放
//audio.src='https://awp.qq.com/act/a20160315live/shake_sound_male.mp3';//不可以播放
audio.play();
</script>

再看他们的区别:

第二个的返回头:

总结:其实audio标签是可以跨域的,关键是被跨的那个服务器允不允许....

----------------

应该要在跨域服务器 apache或iis  虚拟目录配置文件,配置允许跨域请求.

apache为例:

Apache跨域设置:

例如a.com里面的页面需要跨域请求 b.com 里面的资源;
那么需要设置b.com返回的HTML请求里面配置Access-Control-Allow-Origin Header。不要搞混了去配置a.com的域名

可以配置具体请求的Header,或者在apache配置文件里面进行统一配置(所以使用set 而不是 add);即在<VirtualHost>节点或者<Directory>节点下添加如下代码:

Header set Access-Control-Allow-Origin "http://a.com"

Header set Access-Control-Allow-Origin "*"

经过测试发现,如果指定具体的域名,只能指定一个域名;Access-Control-Allow-Origin 不能同时指定多个域名地址;也不支持配置http://*.a.com这样的通配符;只能是具体的某个域名或者 "*";

转:https://www.jianshu.com/p/e18722bc67a7

关于audio标签播放跨域的问题的更多相关文章

  1. 使用audio标签播放音频文件

    HTML5定义了一个新的元素用来指定标准的方式来插入音频文件到web页面中:<audio>标签.使用audio标签可以控制音频的播放与停止,循环播放与播放次数设置,以及播放位置等等. 例如 ...

  2. jsonp跨域请求,动态script标签实现跨域

    1.什么是跨域 首先一个域名地址的组成是: http://www.xxx.com:8080/xxx/xxx.jsp 协议子域名主域名端口号请求资源地址 当协议.子域名.主域名.端口号中任意一个不相同时 ...

  3. 动态Script标签 解决跨域问题

     动态Script 解决跨域问题 1.动态创建scriptcreateScript : function(src){ var varScript = document.createElement(&q ...

  4. audio标签的自动播放(ios)

    0.应用场景 前端移动端开发,经常有播放音乐的需求.比如我有公司做过类似支付宝的年度账单,功能是用户在查看年度账单的过程中播放轻音乐. 1.audio标签播放mp3 (一)常用属性和API介绍 1.c ...

  5. 可以链接不同源的资源的html元素(能实现跨域)

    可以链接不同源的资源的html元素(能实现跨域): img.script.css.video.audio.object.embed.applet.@font-face.frame.iframe等. ( ...

  6. js中各种跨域问题实战小结(一)

    什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...

  7. JS中的跨域问题

    一.什么是跨域? 1.定义:跨域是指从一个域名的网页去请求另一个域名的资源.比如从www.baidu.com 页面去请求 www.google.com 的资源.但是一般情况下不能这么做,它是由浏览器的 ...

  8. 跨域的根本原因:JavaScript 的同源策略

    摘自:https://blog.csdn.net/liubo2012/article/details/43148705 同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin) ...

  9. js中各种跨域问题实战小结

    什么是跨域?为什么要实现跨域呢?   这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源 ...

随机推荐

  1. php 自动补位

    1  sprintf("%06d", 2); 2  str_pad();

  2. 添加HP消息队列

    Date: 20140210 Auth: Jin 两台服务器 120 HTTPSQS 236 HTTPPROXY 1.add host $ jump 120 #vim /etc/hosts 192.1 ...

  3. Spring注解@Primary的意思

    @Primary:在众多相同的Bean中,优先使用@Primary注解的Bean. 这个和@Qualifier有点区别,@Qualifier指的是使用哪个Bean进行注入. 参考: http://bl ...

  4. 基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  5. Mac下php 5升级到php 7的步骤详解

    前言 在MAC OS X 10.11中php的版本是5.5的,近来一年多里,看到了很多关于php7介绍,以为php7增加了很多新特性,也删除了原来很多的老特性,所以一直以来并没想去尝试使用php7,但 ...

  6. ISP图像调试工程师——宽动态增强(熟悉图像预处理和后处理技术)

    宽动态范围图像快速增强算法 : http://www.docin.com/p-1783311889.html

  7. 练oj时的小技巧(大多都在oj记录里,这是被忘记的部分)

    1. getline()函数,头文件为#include<string> getline(istream &in, string &s):从输入流读入一行到string s ...

  8. idea autoscroll from source

  9. 转:mac 设置root 密码

    终端中输:sudo passwd rootpasswd root是修改root的命令,unix下sudo是以当前用户的身份执行root的命令,以避免输入root的密码但是sudo依赖于配置文件/etc ...

  10. block的知识点

    // //  main.m //  1211块练习 // //  Created by jerehedu on 14/12/11. //  Copyright (c) 2014年 jereh. All ...