2017-08-25 279 views
1

這個答案here說我在使用window.open時無法傳遞標題。雖然我找不到任何文件說明這一點。在window.open請求中添加標題的可能方法

真的不可能這樣做。有沒有可能的黑客?

我的客戶端請求被髮送到我無法控制的服務器。瀏覽器發送的用於打開pdf(window.open)的請求在該服務器上收到,但不包含auth標頭。因此,提示用戶輸入用戶名和密碼。

有沒有一種方法可以解決我的問題,並能夠從我的Angular應用程序中打開pdf。我也想知道window.open如何在內部工作,因爲我無法在網上找到它?

在此先感謝

+0

https://stackoverflow.com/questions/23138671/how-to-add-authentication-header-to-window-open –

+0

該規範沒有給出任何線索,這是意圖,雖然查詢參數也是某種的頭... https://www.w3schools.com/jsref/met_win_open.asp – Mijago

+0

可能重複的[window.open與標題](https://stackoverflow.com/questions/4325968/window-open-with-頭文件) – Mijago

回答

0

我能夠從緩存中獲取文件的兩倍,從服務器一次,一次解決問題。這需要在響應中使用Cache-Control標頭。我正在使用Angular,AdalJS和Web Api,但這可能適用更廣泛。

我使用帶有由AdalJS添加的auth頭部的$ http調用來安全地檢索文件。該響應由瀏覽器緩存。完成後,我使用window.open打開緩存的文件。

彈出窗口阻止可能是一個問題。如果您無法禁用阻止,請考慮顯示第二個按鈕以在下載完成時單擊,從中調用window.open。