2010-11-22 62 views
2

具有我在哪裏呈現一個pdf(存儲爲一個字節數組)轉換成一個asp.net網頁,使用下面的代碼一個輕微的問題:PDF渲染到asp.net網頁導致靜態標題

Response.ClearContent(); 
Response.AppendHeader("content-length", document.Length.ToString()); 
Response.ContentType = "application/pdf"; 
Response.BinaryWrite(document); 
Response.Flush(); 
Response.Close(); 

這個工作沒有任何問題,但是爲了渲染這個pdf(即返回字節數組),我們通過在QueryString中傳遞一些參數來調用Web服務。這就是問題出現的地方。PDF呈現後,它將標題顯示爲頁面的完整url +查詢字符串。顯然,出於安全原因,我們不希望用戶獲得該信息。

沒有人知道如何設置頁面的標題一旦pdf呈現出來?我已經嘗試使標題運行服務器端,但它沒有任何效果。有趣的是,如果pdf渲染失敗,或者數據方法出現故障,它會正確更改標題。它幾乎像一旦它命中pdf渲染它將標題改回到url/querystring。

除此之外,我還檢查了Web服務傳回的PDF標題,存儲在PDF屬性中的標題與頁面標題欄上顯示的標題完全不同。

任何幫助將不勝感激,
乾杯,
亞當

回答

2

你上架正在被清除:

Response.ClearContent(); 

所以,即使你在<title>...</title>設置它,你永遠不要發送給客戶。

由於內容類型爲application/pdf,瀏覽器不知道如何呈現標題,因此呈現URL。

隱晦並不是一種安全形式,如果您依賴用戶不知道Url來阻止他們再次下載文件,則需要重新考慮。藉助網絡檢測工具,即使您對Url進行了模糊處理,他們也能輕鬆查看他們要求的資源。

+1

在發送PDF之前清除內容是正確的:您不能在同一個響應中混合使用PDF內容和HTML。 – 2010-11-22 09:59:22