这个答案here说我在使用window.open时无法传递标题。虽然我找不到任何说明这一点的文件。
真的不可能这样做。有没有可能的黑客攻击?
我的客户端请求被发送到我无法控制的服务器。浏览器发送的用于打开pdf(window.open
)的请求在没有auth
标头的服务器上接收。因此,系统会提示用户输入用户名和密码。
有没有办法可以解决我的问题,并且可以从我的Angular应用程序中打开pdf。我还想知道window.open
内部是如何工作的,因为我在网上找不到它?
提前致谢
答案 0 :(得分:0)
我能够通过两次获取文件来解决问题,一次从服务器获取,一次从缓存中获取。这需要响应上的Cache-Control标头。我正在使用Angular,AdalJS和Web Api,但这可能会更广泛地适用。
我使用带有AdalJS添加的auth标头的$ http调用来安全地检索文件。此响应由浏览器缓存。完成后,我使用window.open打开缓存文件。
弹出窗口阻止可能是个问题。如果您无法禁用阻止,请考虑在下载完成时显示第二个按钮以从中调用window.open。