如何使用html音频元素安全地传输音频文件

时间:2018-03-09 14:35:25

标签: angular cookies .net-core jwt html5-audio

我有.net核心后端,它有REST api端点,用于下载上传的mp3文件。我喜欢音频元素功能,一旦它获得足够的数据就开始播放,所以我不想单独下载整个文件。我的前端是使用Angular 5.我的另一个API端点使用JWT令牌身份验证,因为我可以手动将JWT设置为Header,但是当我使用audio-element时,audio元素本身会进行API调用,而我无法添加Header来请求。

<audio height="40" id="audio1" preload="auto" style="visibility: hidden" type="audio/mpeg" src="api/audio/2269" >
</audio>

当我在我的REST API所在的同一起源服务我的前端时,我使用cookie身份验证时效果很好。但是现在我打算将前端移到其他云端,然后我意识到某些cookie只在同一个域上运行。我检查我甚至没有从不同的域到我的浏览器获取cookie。

所以我的问题是,在使用html音频元素时,我可以使用JWT令牌以某种方式验证用户吗? 或者我可以在.net Core 2中以某种方式配置cookie身份验证以允许不同的域。我发现了这个Cookie.Domain here,但我不确定它是否适用于此。

这是我目前在.net核心中的cookie配置。

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => 
            {
                options.Cookie.Name = "access_token";
                options.LoginPath = "/login";
                options.LogoutPath = "/login";
            })
            .AddJwtBearer(options => 
            {
                options.TokenValidationParameters = tokenValidationParameters;
            });

1 个答案:

答案 0 :(得分:0)

所以我发现了我的问题,Azure的CORS设置是什么让我在.net核心中的CORS设置搞乱了。我在Azure中删除它们然后我的.net核心CORS设置正确。这是我的第二个问题:How to configure .net core to send authentication cookies to different domain

相关问题