1

我正在使用当前从使用 cookie 身份验证切换到身份服务器的系统。应用程序的前端是一个使用 KnockoutJS 的 SPA。SPA 可以访问其内容的 WebAPI 范围。

我们目前有代码允许 SPA 获取 Identity Server 的不记名令牌,并对 API 进行 ajax 调用,并在 Authentication 标头中传递令牌。我们现在遇到的问题是如何替换一些之前直接链接到 WebAPI 的图像标签 src 属性。

一个例子是:

<img alt="Secure image" src="/api/username/secureimage?v=1464277579255" />

这是使用类似于以下方法的方法签名与 web api 交谈(为这篇文章删减)

[HttpGet("")]
[Route("api/{username}/[controller]")]
public async Task<IActionResult> SecureImage(string username)
{
    var secureImage = await _manager.GetSecureImageAsync(username);
    if (secureImage != null)
        return File(secureImage.FileName, secureImage.ContentType);
    return HttpNotFound();
}

我们看到的一种方法是更改​​ API 以返回 base64 编码图像并使用 ajax 请求图像字符串,然后可以将其设置为 src,例如

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

这不是我们当前系统的一个选项,因为使用这种方法可以显示的图像文件有大小限制(这似乎因浏览器而异),而且我们的许多图像对于这种方法来说太大了。

有没有其他方法可以安全地将大图像传递给浏览器?

4

0 回答 0