【问题标题】:Why are audio files (MP3) blocked by CORS? What's the security risk?为什么 CORS 会阻止音频文件 (MP3)?有什么安全风险?
【发布时间】:2017-12-23 15:01:48
【问题描述】:

为什么MP3文件需要将Access-Control-Allow-Origin设置为*,才能被其他域的网站加载?这有什么安全风险?

还是只是为了防止他人显示您未授权的内容(假设浏览器支持 CORS)?

【问题讨论】:

  • @cartant 这并不能解释为什么读取媒体文件是一个安全问题。或者是为了保护他人的内容不被阅读,而不是为了安全?如果是这样,那就奇怪了。如果真的想要获取 MP3 文件的内容,还有很多其他方法……我只是想了解阻止脚本读取 MP3 文件对安全性的价值。
  • 是的。不允许跨域读取(不仅仅是 MP3 文件),CORS 是可选的。

标签: cors


【解决方案1】:

大部分视频播放器都是在script标签中使用JS初始化的,视频是通过XMLHttpRequest获取的。

根据docs

出于安全原因,浏览器会限制从脚本中发起的跨域 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载该应用程序的同一域请求 HTTP 资源,除非使用了 CORS 标头。

因此,为了安全和防止数据泄露,需要 CORS 标头。

【讨论】:

  • 我知道,但是如何在网站内下载 MP3 文件特别是安全问题?我不明白它是如何...
  • 服务器而不是客户端的数据泄露问题
  • 说,如果我想要视频 http://example.com/example.mp4 仅在 http://example.com 上运行,我不会发送 CORS 标头。这样,一些 3rd 方网站将无法使用 JS script 标签从我的服务器获取视频
  • 在保护人们的版权和知识产权的意义上,这是有道理的。但是,这并不能阻止确定的版权侵权者以其他方式下载 MP3 文件,因此 CORS 只是由于各种浏览器不一致和错误而导致问题。例如,我尝试在不同的域上使用我自己的该死的内容,即使我的内容将Access-Control-Allow-Origin 设置为“*”,Chrome 也不会让我这样做!我只是现在不喜欢 CORS(或者我不喜欢 Chrome)。
  • 但 chrome 不知道,它只知道您正在从外部站点请求资源。虽然这对于视频来说似乎毫无意义,但考虑到您无法真正概括视频 URL,并且真正 REST 调用中的 CORS 是一件好事,但对我来说这很有意义。
猜你喜欢
  • 2011-11-07
  • 2011-11-09
  • 2017-06-17
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多