我需要屏蔽某些歌曲的外部URL,用户可以从浏览器中复制它们。 URL不在服务器之外,我不能将它们(我认为是)作为友好URL
现在有这样的东西:
<audio controls="controls">
<source src="http://X.X.X.X/music/12345pd?so=/stream" type="audio/ogg" />
</audio>
如果用户在浏览器中查看了源代码,则他应该看不到该URL,或者在任何情况下,他都必须看到以下内容:
<audio controls="controls">
<source src="http://myweb/Rock" type="audio/ogg" />
</audio>
我不在乎解决方案是jquery,javascript还是其他复制方法。
答案 0 :(得分:0)
我是支持@charlietfl的评论的人之一,但是您可以执行以下操作:
Random rnd = new Random();
string value = rnd.Next(int.MaxValue).ToString()
Session[trackid] = value;
<audio controls="controls">
<source src="http://myweb/Play/trackid=@Session[trackid]&value=@value" type="audio/ogg" />
</audio>
然后在播放页面中
[HttpGet]
public IActionResult Play([FromUri] string trackid, [FromUri] string value)
{
if(Session[trackid] == value)
{
byte[] b = System.IO.File.ReadAllBytes(trackid + ".ogg");
Random rnd = new Random();
Session[trackid] = rnd.Next(int.MaxValue).ToString();
return File(b, "audio/ogg");
}
return Content("");
}
这将使您的链接在页面加载时只能工作一次,并且如果用户复制了链接,则将无法工作。