我正在使用身份验证的服务器+客户端。客户端通过命中服务器上的某个端点并获取授权令牌,使用用户名/密码登录。所有后续服务器调用都使用令牌对服务器进行身份验证。这允许两者生活在不同的领域。
我遇到的问题是我需要在用户的浏览器中显示PDF文档。除非您在HTTP请求标头中包含有效标记,否则服务器不会向您提供PDF。出于这个原因,我不能只是将用户链接到服务器页面,我必须使用正确的标题进行AJAX,并以某种方式显示(或者如果所有其他方法都失败则下载)PDF文档。同样,出于同样的原因,我无法使用<embed>
或类似的解决方案:我无法将自己的HTTP标头添加到这些请求中。
我也尝试了data URIs,就像<a>
href
data:application/pdf;base64,etc
@JavascriptInterface
public void check(String p) {
if(p == "apple"){
Toast.makeText(mContext, p, Toast.LENGTH_SHORT).show();
}
}
一样,但是出于安全原因(?} )。
我还研究了download.js,这是一个次优的解决方案(我宁愿显示PDF,而不是下载它),它也不支持IE 9。到目前为止,这是最兼容的解决方案,因为它支持Edge。
是否可以通过AJAX方式获取受授权保护的PDF数据,并在包括Edge在内的所有现代浏览器中可靠地显示它?