Javascript:通过POST获取音频

Javascript:通过POST获取音频,javascript,.htaccess,Javascript,.htaccess,我可能是从完全错误的角度来看这个问题的(如果是这样的话,请随时告诉我),但是 我有一个音乐应用程序,用户可以在其中上传音乐曲目,然后在以后预览 存储音频的目录受.htaccess保护,以防止未经授权的访问: deny from all 保护此目录显然会阻止Javascript访问文件: var track = new Audio('path/to/file'); 我希望能够验证用户,然后通过另一个脚本返回曲目,方法是在页面请求中传递额外的信息(GET请求的数据太多) 这可能吗?如果你能想出一

我可能是从完全错误的角度来看这个问题的(如果是这样的话,请随时告诉我),但是

我有一个音乐应用程序,用户可以在其中上传音乐曲目,然后在以后预览

存储音频的目录受.htaccess保护,以防止未经授权的访问:

deny from all
保护此目录显然会阻止Javascript访问文件:

var track = new Audio('path/to/file');
我希望能够验证用户,然后通过另一个脚本返回曲目,方法是在页面请求中传递额外的信息(GET请求的数据太多)


这可能吗?如果你能想出一个解决方案,我很想听听。

为什么不通过一个php脚本来提供音频文件呢

  • 检查用户凭据和
  • 使用正确的Mime类型流式传输数据
  • 有点像(受这么多问题的启发)

    get audio.php
    文件中

    <?php 
    // check user credentials
    if($_GET['auth_token'] != '12345') exit;
    
    // read the audio file
    $name = $_GET['path'];
    if (file_exists($name)) {
    
        // send the right headers
        header("Content-Type: audio/mp3");
        header("Content-Length: " . filesize($name));
    
        // dump the file and stop the script
        readfile($name)
        exit
    }
    

    这是绝对可能的,您可以指定您使用的是哪种后端技术吗?PHP。问题不在PHP端,而是请求文件时实际发送的post数据。如果是PHP,@Fabien解决方案有什么问题?我的身份验证数据太大,无法使用GETYep发送!看看这个:
    <?php 
    // check user credentials
    if($_GET['auth_token'] != '12345') exit;
    
    // read the audio file
    $name = $_GET['path'];
    if (file_exists($name)) {
    
        // send the right headers
        header("Content-Type: audio/mp3");
        header("Content-Length: " . filesize($name));
    
        // dump the file and stop the script
        readfile($name)
        exit
    }
    
    var track = new Audio('get-audio.php?auth_token=12345&path=path/to/file');