Http headers Icecast2-如何添加访问控制允许源标题?

Http headers Icecast2-如何添加访问控制允许源标题?,http-headers,xmlhttprequest,debian,icecast,Http Headers,Xmlhttprequest,Debian,Icecast,我正在尝试使用XHR从我的icecast2服务器上播放音乐 但是,目前我遇到了错误(将实际域替换为example.com): XMLHttpRequest无法加载http://example.com:8000/stream.ogg. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://example.com因此,不允许访问。 我一直在搜索有关如何向流中添加自定义头的信息,但找不到任何相关信息 如何将access control allow ori

我正在尝试使用XHR从我的icecast2服务器上播放音乐

但是,目前我遇到了错误(将实际域替换为example.com):

XMLHttpRequest无法加载http://example.com:8000/stream.ogg. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://example.com因此,不允许访问。

我一直在搜索有关如何向流中添加自定义头的信息,但找不到任何相关信息

如何将access control allow origin标头添加到此流

我看到一些Anwser告诉我将其添加到apache配置或.htaccess中,但由于这不使用apache服务,因此无法工作


谢谢。

您可以将Access Control Allow Origin标头添加到Icecast中继的客户端响应中 通过在的util_http_build_header函数中添加标题,可以在下面的行中添加标题

请参阅访问控制允许原点:http://foo.example\r\n“,在contenttype\u缓冲区之后

ret = snprintf (out, len, "%sServer: %s\r\n%s%s%s%s%s%s",
                              status_buffer,
                  config->server_id,
                  currenttime_buffer,
                  contenttype_buffer,
                  "Access-Control-Allow-Origin: http://foo.example\r\n",
                  (status == 401 ? "WWW-Authenticate: Basic realm=\"Icecast2 Server\"\r\n" : ""),
                              (cache     ? "" : "Cache-Control: no-cache\r\n"
                                                "Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n"
                                                "Pragma: no-cache\r\n"),
                              (datablock ? "\r\n" : ""),
                              (datablock ? datablock : ""));
通过添加以下内容,可以将Access Control Allow Origin标头添加到Icecast 2.3.2的客户端响应中

bytes = snprintf (ptr, remaining, "Access-Control-Allow-Origin: http://foo.example\r\n");
remaining -= bytes;
ptr += bytes;
在添加服务器头的行之后和添加缓存控制头的行之前,使用格式化\u prepare\u headers方法

此建议的其他改进包括创建头名称和值Icecast配置变量(将它们添加到中的ice_config_标记结构中,并在调用
config_release_config();
)之前访问它们),或添加处理以从源代码支持通用(例如,无ice)头,由于同一函数中的当前逻辑将icy添加到源中的所有头中

例如,如果将自定义标题的变量添加到
char*自定义_头添加到结构定义,然后修改
\u parse\u root
config\u clear
\u set\u defaults
函数。在中,您可以像任何其他配置变量一样,在Icecast配置文件中设置自定义头

™ 实现这一点的方法是升级到Icecast 2.4.1,该版本明确添加了此功能,以帮助使用其(固定的)JSON API和HTML5功能


包可用于大多数发行版。请参见

我认为有一种方法可以在Icecast中添加标题,但我记不得了。如果你不让它工作,CORS头在我自己的服务器AudioPump中是标准的。如果你想试试,请发电子邮件给我brad@audiopump.cowhere如果我将标题添加到cfgfile.h中,我是否能够配置它?我没有用C语言开发的经验,所以这对我来说有点陌生。此外,服务器和缓存控制标题行在当前(2.4.0)版本中已被删除。要知道他们添加了标题行,当我问这个问题时,绝对没有简单的方法可以做到这一点。是的,只是想添加标题行,这样,如果有人偶然发现这个问题,他们就有机会采取简单的方法。;-)我刚刚又搜索了一遍,最后又问了我自己的问题,很高兴你添加了这个信息哈哈