在window.open请求中添加标头的可能方法

时间:2017-08-25 06:38:29

标签: javascript browser http-headers window request-headers

这个答案here说我在使用window.open时无法传递标题。虽然我找不到任何说明这一点的文件。

真的不可能这样做。有没有可能的黑客攻击?

我的客户端请求被发送到我无法控制的服务器。浏览器发送的用于打开pdf(window.open)的请求在没有auth标头的服务器上接收。因此,系统会提示用户输入用户名和密码。

有没有办法可以解决我的问题,并且可以从我的Angular应用程序中打开pdf。我还想知道window.open内部是如何工作的,因为我在网上找不到它?

提前致谢

1 个答案:

答案 0 :(得分:0)

我能够通过两次获取文件来解决问题,一次从服务器获取,一次从缓存中获取。这需要响应上的Cache-Control标头。我正在使用Angular,AdalJS和Web Api,但这可能会更广泛地适用。

我使用带有AdalJS添加的auth标头的$ http调用来安全地检索文件。此响应由浏览器缓存。完成后,我使用window.open打开缓存文件。

弹出窗口阻止可能是个问题。如果您无法禁用阻止,请考虑在下载完成时显示第二个按钮以从中调用window.open。