1

所有这些有什么区别?它们的含义是什么?

  1. /;stream.mp3[究竟是什么; /斜杠后的分号表示?]

  2. 另外,如果我去掉stream.mp3, 只在斜线后面留下分号,/;或者我留下 `stream.mp3 附加,有什么区别?

  3. /stream【这个怎么只有stream,就这样。[斜线后面没有;分号/,也没有stream.mp3?

  4. 为什么一个流可以在没有分号的情况下工作,为什么一个流需要有分号?

  5. http://91.223.18.205:8000/c11_4?[icecast] 为什么这个?结尾有一个问号[这意味着什么?]

4

1 回答 1

0

SHOUTcast 从与流完全相同的端口和路径为其管理接口提供服务。例如,假设我有一个 SHOUTcast 服务器在端口8000上运行198.51.100.100。如果我在浏览器中转到以下内容...

http:///198.51.100.100:8000/

...我将看到 SHOUTcast 管理页面,我可以在其中登录和断开连接,等等。但是,如果我使用媒体播放器(例如 VLC 或 Winamp)访问相同的 URL,我会听到流。

User-AgentSHOUTcast 根据请求标头知道要给我哪个。此标头指示正在尝试连接到服务器的客户端。当我连接浏览器时,它可能看起来像这样:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36

如果我使用 VLC 连接,User-Agent请求标头可能如下所示:

NSPlayer/7.10.0.3059

SHOUTcast 没有所有浏览器的列表。相反,它只寻找一个关键字Mozilla...... 由于历史原因,这在大多数浏览器的用户代理字符串中都可以找到。如果MozillaUser-Agent请求标头中,则 SHOUTcast 发送管理页面。对于所有其他人,它发送一个流。

这会产生很多问题。最值得注意的是,这意味着您无法在浏览器中收听流。如果您在网页上加载该流,则User-Agent字符串将包含Mozilla,并且 SHOUTcast 服务器将发送管理页面,从而导致播放器出错。

有办法解决这个问题。如果在请求路径中添加分号;,则 SHOUTcast 会忽略实际User-Agent并将其替换为MPEG OVERRIDE. (您可以在 SHOUTcast 服务器日志中看到这一点。)这会导致服务器发送实际的无线电流。

因此,;在 SHOUTcast 流的路径中看到分号是很常见的。但是,怎么;stream.mp3办?有一天有人做了,其他人都复制粘贴了。就那么简单。SHOUTcast 服务器会忽略该分号之后的所有内容,因此您可以将任何您想要的内容放在那里。

有时,这可能是有原因的.mp3。通过 HTTP 加载时,您应该能够通过Content-Type响应标头确定某物的类型。“文件名”完全没有意义。您可以将 Web 服务器配置为使用任何文件扩展名命名您想要的任何内容,并且只要您发送了正确的Content-Type响应标头,一切都很好。有一次,在过去的 15 年里,我遇到了假定文件扩展名有效且必需的软件。这是一种非常错误的做事方式。幸运的是,他们修好了它,一切都很好。这是一个非常罕见的问题,而不是您应该担心的问题。

既然已经解释了 SHOUTcast hacks...关于您的其他问题。

/stream [这个怎么只有stream,就是这样。[没有; /斜线后的分号并且没有stream.mp3?

那些运行服务器的人可以为所欲为。这只是普通的HTTP。路径可以是任何东西。在这种情况下,有人决定调用那里运行的任何东西/stream。他们可能也没有使用 SHOUTcast。(同样,SHOUTcast 是非标准的,不正常的。)

为什么一个流可以在没有分号的情况下工作,为什么一个流需要有分号?

只有 SHOUTcast 需要分号;才能按预期工作。其他服务器不需要此 hack。

http://91.223.18.205:8000/c11_4?[icecast] 为什么这个有一个?最后的问号[那是什么意思?]

URL 中的问号?将路径与查询字符串分开。查询字符串可用于提供参数列表,通常用于路径中的脚本。在这种情况下,问号无关紧要,因为它后面没有参数。

旧的 IE(我认为是 4)过去常常过度缓存东西,但如果涉及查询字符串,通常不会。有时人们会添加带有随机数的查询字符串,以确保他们收到来自服务器的新副本。这是一个很长一段时间都不需要的 hack。IE 4 大约在 20 年前问世。这些天来,我们使用适当的缓存控制标头。SHOUTcast、Icecast 等都正确地做到了这一点。

于 2016-07-06T05:55:27.150 回答