用于访问另一个域上的文件的 CORS 标头

2023-12-02

我正在尝试在 Codepen 上创建一个音频可视化程序。我使用 apache 创建了自己的 Ubuntu Web 服务器,它允许我直接访问以修改服务器的标头和配置。

虽然浏览器可以访问不同域上的文件,但它需要特殊的 CORS 标头来读取音频中的频率。要读取音频频率,我必须使用createMediaElementSource访问包括频率在内的音频信息。当浏览器看到这个 JavaScript 方法时,它知道服务器上必须设置某些标头才能允许访问。这让我们想到了这个问题的动机:需要设置哪些标题?

我测试过的所有浏览器都会返回 CORS 错误的变体。 尽管我在 Chrome、Opera 和 Safari 中测试过该错误,结果类似,但 Firefox 中的错误是这样的:

跨源请求被阻止:同源策略不允许读取远程资源http://williamgreen.hopto.org/audioVisualization/song.mp3。 (原因:CORS 标头“Access-Control-Allow-Origin”与“(null)”不匹配)。

The file returns 206 partial content. Here are the returned server headers (currently): Audio file returned headers Here are the sent headers (currently): audio file send headers

function log(text) {
  document.getElementById("log").textContent += text + "\n";
}

var audio, source, context;
var url = "http://williamgreen.hopto.org/audioVisualization/song.mp3";

document.addEventListener("DOMContentLoaded", function() {
  log("URL: " + url);
  
  log("Creating Audio instance from audio file");
  audio = new Audio(url);
  audio.crossOrigin="anonymous";
  
  audio.addEventListener("canplay", function() {
    log("Playing audio file through HTML5 Audio for 3 seconds");
    audio.play();
    
    setTimeout(function() {
      log("Creating Web Audio context");
      context = new (typeof AudioContext != "undefined" ? AudioContext : webkitAudioContext)();

      log("Calling createMediaElementSource on audio (switching to Web Audio)");
      source = context.createMediaElementSource(audio);
      
      setTimeout(function() {
        log("Connecting source to context destination");
        source.connect(context.destination);
        
        log("\nIf no sound can be heard right now, the problem was reproduced.");
      }, 1000);
    }, 3000);
  });
});
<div id="log"></div>

我需要更改什么才能使其正常工作?


我的第一个想法是问题出在你身上

Access-Control-Allow-Origin: *, *

我不认为这是理解*, *事物。尝试一下*.

Edit:您可以使用如下命令检查标头的实际情况:

curl -v -o /dev/null http://williamgreen.hopto.org/audioVisualization/song.mp3

而且,瞧,它甚至对我有用,产生(在许多其他标头中):

< Access-Control-Allow-Origin: *

所以这真是太好了。

其次,你是从一个file:起源?这在 Chrome 上不起作用(我以为它会在 Firefox 上起作用,但也许情况已经改变了)。你必须从一个运行它http: or https: origin.

我所说的“从文件运行:origin”是指从带有“file:”的 URL 加载正在运行的 Javascript 的 HTML 文件。如果是这样,那不太可能起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于访问另一个域上的文件的 CORS 标头 的相关文章

随机推荐

  • 使用 rvest 抓取图像标题

    我正在尝试使用 R 和 SelectorGadget 中的 rvest 包从 Glassdoor 中提取个人评级 API 仅提供摘要评级 来识别我的 CSS 选择器 问题是 Glassdoor 使用图像来传达评级 但数字评级包含在图像标题中
  • 如何使用 PHP 发送带有附件的电子邮件?

    我正在使用以下代码发送带有附件的电子邮件 但正确的文件没有附加到邮件中 UnidID COOKIE UniqueID guid COOKIE guid target path userdata UniqueID iGuid Outputs
  • 选择满足不同记录中许多条件的列

    我有这样的表 Customer Product 1 1 1 2 1 3 2 1 2 2 2 2 我想选择购买了产品 1 AND 2 AND 3 的客户 因此我的查询应返回 1 如何实现这一点 如果您想要购买所有 3 个产品的客户 您可以使用
  • ansible 在 OSX 上找不到 pycurl

    我刚刚开始使用 ansible 我正在尝试让它与linodeOSX Yosemite 的模块 我正在使用brew安装的Python和pip安装的ansible 所以我做了以下事情 brew install python PYCURL SSL
  • 如何在浏览器 JS 控制台中包含脚本时覆盖内容安全策略?

    我试图以这种方式使用控制台将 JQuery 包含在现有网站上 var script document createElement script script src http code jquery com jquery 1 11 1 mi
  • 在 jQuery 中搜索和突出显示

    我想使用 jQuery Javascript 搜索并突出显示文本 示例 HTML 1 div b Good b b Morning b div div Good Evening div div Good Morning div Search
  • 添加 Maven 支持后 JavaFX 项目出现问题(应用程序启动方法中出现异常)

    我使用 JDK 1 8 创建了一个 JavaFX 项目 工作正常 但如果我尝试添加 Maven 支持 编译就会失败 首先 我尝试在 Java 11 中使用 JavaFX 11 执行此操作 但效果是相同的 我花了两天时间寻找它不起作用的原因
  • Oracle sql查询联合操作?

    我有两张桌子 TableA and TableB 这两个表都有一些包含两列的数据 如下所示 TableA id Name 1 abc 2 def TableB id Name 1 xyz 2 pqr 现在我将从我的应用程序中传递 id 列表
  • 在解释器中从 python 对象获取 ast

    我正在构建一个应用程序 我希望天真的用户为其定义一个简单的函数 然后我想采用这个函数并将其转换为抽象语法树 这也应该在交互式会话期间起作用 即使用解释器 这是我迄今为止在解释器中尝试过的 dill source getsource meth
  • jQuery/Javascript 框架效率

    我的最新项目是使用 javascript 框架 jQuery 以及一些插件 验证 jquery ui datepicker facebox 来帮助制作现代 Web 应用程序 我现在发现页面加载速度比我习惯的要慢 经过一些 js 分析 感谢
  • 使用 R 连接到 Twitter Streaming API

    我刚刚开始使用 Twitter Streaming API 并使用命令行 使用以下命令将原始 JSON 响应重定向到文件 curl https stream twitter com 1 statuses sample json u USER
  • 从“const char*”到“char”的转换无效

    我正在尝试使用以下代码行将字符串中的某个字符替换为空格 str i 如何在不出现问题标题错误的情况下实现这一点 使用单引号 str i 在 C 中 令牌 是一个字符串文字 表示两个字符的数组 字符集中的空格值 例如 ascii 中的值 32
  • 如何动态地将源添加到现有图表?

    什么可以替代动态改变运行图 这是我的情况 我有将文章摄取到数据库中的图表 文章来自 3 个不同格式的插件 因此我有几个流程 val converterFlow1 Flow ImpArticle Article NotUsed val con
  • PHP SSLstream_socket_client不会使用创建的$context

    我完全失望了 我正在连接到 ssl 服务器 并且直接连接运行良好 但是当我尝试添加流上下文以使用代理或socks5时 套接字不会使用它并且直接连接到这些 ssl 服务器非常好 我我正在通过观察 127 0 0 1 代理服务器日志进行检查 甚
  • 在 Windows 上开发 Python 和 Django 应用程序时的 .gitignore

    我应该改变什么 gitignore当我在 Windows 上使用 PTVS 开发 Python Django 应用程序时 文件是什么 GitHub 有一个不错的收集 gitignore模板 当我启动 Django 项目时 我抓住了Pytho
  • Android 中的电话号码格式

    在我的应用程序中 我有一个 editText 它将接受用户的电话号码 我的目标是 一旦用户输入电话号码 它就应该被格式化 就像通过在文本更 改侦听器上应用一样 格式就像XXX XXX XXXX 我将代码写为 ePhone addTextCh
  • Python isDisjoint() 运行时

    Python 2 7 的算法运行时是多少isDisjoint other 集合的方法 它比简单地做更快吗intersection other 然后检查len gt 0那个返回的交集 这两种情况的复杂性都是O min len s len t
  • python 2.7 的非 ASCII 标识符

    我知道在 python 3 x 中我可以使用非 ASCII 标识符 PEP 3131 x1 2 x2 4 x x2 x1 print x python 2 7有这样的功能吗 也许 有人将它移植到 2 x 分支吗 不 Python 2 中没有
  • 调用 C# 代码时,PowerShell $null 不再为 null

    在 PowerShell 中 我们可以定义 C 代码并执行它 将 null 传递到以下最简单的函数中表明 not null 被传递到函数中 Add Type TypeDefinition public static class foo pu
  • 用于访问另一个域上的文件的 CORS 标头

    我正在尝试在 Codepen 上创建一个音频可视化程序 我使用 apache 创建了自己的 Ubuntu Web 服务器 它允许我直接访问以修改服务器的标头和配置 虽然浏览器可以访问不同域上的文件 但它需要特殊的 CORS 标头来读取音频中