【问题标题】:Allowing video to be played in <video> element from my website, but not allowing it through direct link允许在我网站的 <video> 元素中播放视频,但不允许通过直接链接播放
【发布时间】:2017-10-12 14:35:50
【问题描述】:

我使用了以下技巧:

首先,我禁用了右键单击,以防止用户使用此 HTML5 使用 save asget link

<body oncontextmenu="return false;">
</body>

其次:我使用了controlsList="nodownload",但问题是它只能在 Chrome 58+ 中正常工作,如this,稍后我可能会考虑海关控制,如图所示here

<video width="512" height="380" controls controlsList="nodownload"
       poster="https://archive.org/download/WebmVp8Vorbis/webmvp8.gif" >
      <source src="videos/289522.mp4" type="video/mp4">
      <source src="videos/289522.ogv" type="video/ogg">
      <source src="videos/289522.webm" type="video/webm">
      Your browser doesn't support HTML5 video tag.
</video>

我仍然需要阻止用户下载它以防他通过其他方式获得链接,我发现一些关于使用.htaccess的讨论,所以我在videos文件夹中创建了一个,并尝试了这个:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://my.domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.my.domain.com/.*$ [NC]
RewriteRule .(mp4|mp3|avi)$ - [F]`

并用作替代方式,这是:

<Files "reminder.php">
        Order Deny,Allow
        Deny from all
        Allow from http://my.domain.com/
        Allow from http://my.domain.com/
</Files>

但是发生的事情是视频已被完全阻止,甚至来自我的网站本身,我开始收到此错误:

GET http://my.domain.com/videos/289522.mp4 500(内部服务器错误)

【问题讨论】:

  • 看来您已经找到了一些很好的解决方案,让您的视频更难被下载。
  • 您能否确认您正在修改的.htaccess 位于您的视频所在的子目录中,并且您的项目/服务器根目录中还有另一个.htaccess?听起来这会导致您遇到问题
  • @Lissy 是的,你是对的,我修改的那个是在视频 subvolder 里面,我在服务器根目录中确实有另一个,我应该删除其中一个吗?
  • 有两个是正确的。只有你的媒体子目录中的那个应该阻止直接访问视频内容,所以你没有类似的东西:RewriteRule .(mp4|mp3|avi)$ - [F] 在你的主要.htaccess

标签: php html .htaccess


【解决方案1】:

这是可能的。

您的 .htaccess 解决方案是个好主意,要使其正常工作,您的 .htaccess 需要位于包含源视频的子目录中,仅此而已。更新它,使其看起来像这样:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://example.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.example.com/.*$ [NC]
RewriteRule .(mp4|mp3|avi)$ - [F]`

或者,这也应该有效(完全阻止访问您的视频内容)

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC]
RewriteRule ^.* - [F,L]

需要同时包含两个代码:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sample.com/.*$ [NC]
RewriteRule ^.* - [F,L]

在旁注中,当我们谈论 .htaccess 时,请查看这个用于编写和测试文件的工具:http://htaccess.mwl.be/。它可以让您查看哪些条件将满足哪些 URL 模式以及结果将是什么,这比您每次进行更改时部署到您的服务器要快得多;)

【讨论】:

  • 但这正是我所做的,我在我的视频文件夹中创建了额外的.htaccess 文件
  • 好的,如果您的两个.htacces 文件都是正确的,请参阅此答案以了解为什么它不刷新:stackoverflow.com/a/26181187/979052 我过去遇到过类似的问题,不知何故 Chrome 缓存了我的旧文件
  • 好的,在我的服务器上进行了测试,并且运行良好:RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC] - 试一试
  • 您可以使其更难下载,但正如此答案所指出的,最终,如果可以查看,则可以下载。即使使用 DRM 之类的东西,如果他们想要一份足够糟糕的副本,他们也可以进行屏幕截图,甚至在屏幕外进行录制。引用者可以被欺骗;但话虽如此,如果你设置一些简单的障碍,大多数人都不会破坏 Wireshark 并试图弄清楚。
  • 我在你的回答中使用了第二个集团,它在我网站的链接和浏览器栏中的直接链接中都给了我 403 错误
猜你喜欢
  • 2019-10-15
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 2015-08-25
  • 1970-01-01
  • 2011-04-29
相关资源
最近更新 更多