在需要身份验证的其他域中的所有浏览器上加载PDF文档

时间:2017-07-26 15:15:38

标签: javascript authentication client-server cross-domain

我正在使用身份验证的服务器+客户端。客户端通过命中服务器上的某个端点并获取授权令牌,使用用户名/密码登录。所有后续服务器调用都使用令牌对服务器进行身份验证。这允许两者生活在不同的领域。

我遇到的问题是我需要在用户的浏览器中显示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在内的所有现代浏览器中可靠地显示它?

0 个答案:

没有答案