我有一个.NET(VB)网站,该网站正在从数据库中提取一些数据,包括一些要在网格中显示的文件名。网格包含一个媒体播放器,该媒体播放器仅获取文件的URI,并根据在客户端浏览器上播放媒体的方式呈现所有内容。
我遇到的问题是这些文件存储在NAS上,除非用户对NAS进行身份验证然后返回到页面,否则它不会呈现任何媒体,因为它会抛出401。(这是公司应用程序,因此访问它的任何人都将在该LAN上)。
网站运行时使用的服务帐户,IIS服务器可以访问nas,但这是客户端请求它的原因,除非经过身份验证,否则客户端将抛出401。
避免应用程序/ IIS通过下载页面代理文件是避免此问题的唯一解决方案吗?
当前方法
<div id="protocol_div">
<div id="protocol_label_div">Protocol</div>
<div id="protocol_select_div">
<select size="1" id="protocols_select">
<option value="file">file</option>
<option value="hdfs">hdfs</option>
</select>
</div>
<div id="open_btn_div">
<button type="button" id="open_file_button">Open</button>
</div>
</div>
<div id="url_div">
<div id="url_label_div">URL: </div>
<div id="url_text_div">
<input type="text" id="url_text"></input>
</div>
<div id="browse_btn_div">
<ReactFileReader multipleFiles={false} fileTypes={[ ".csv"]} handleFiles={this.handleFiles}>
<button id="browse_btn">Browse</button>
</ReactFileReader>
</div>
</div>
代理方式
<audio controls>
<source src="//nas/whatever/<%# Eval("filename") %>" type="audio/wav" />
</audio>
然后在应用程序中下载一些下载页面,该页面仅充当文件的代理。我不确定是否需要添加所有确切的标头才能使浏览器将其正确地视为.wav
<audio controls>
<source src="/download.aspx?file=<%# Eval("filename") %>" type="audio/wav" />
</audio>
有没有更简单的方法可以做到这一点?是否可以仅通过IIS代理文件,而不必让服务器读取每个文件并将它们流回客户端?