2009-10-19 80 views
0

我使用的是Mac OS X Leopard 10.5.8,它運行的是Safari 4.0.3。我的跨平臺Java應用程序具有嵌入式原生Web瀏覽器及其自己的內部Web服務器。每當瀏覽器嘗試提供需要quicktime的文件時(mov,mp4,m4v等),我會得到一個用戶名/密碼憑證對話框。我可以看到每個請求都經過驗證(至少該html文件是經過驗證的),然後我看到mp4的請求,並且它永遠不會被驗證。就好像QuickTime從未將證書交給自己並試圖自行驗證一樣。Safari 4上的QuickTime HTTP基本驗證

我自己內部傳遞這些證書,而其他所有文件類型都可以正常使用基本身份驗證。我甚至可以在Windows上使用QuickTime 7.6.4和相同的確切文件運行應用程序,並按預期運行(Windows在本例中是作爲嵌入式瀏覽器運行IE8)。

QuickTime 7.6.4和Safari 4上的基本身份驗證存在已知問題嗎?我在網上搜索了一下,沒有運氣。

回答

0

這不是Safari 4的問題,而是QuickTime 7.6.4的一個問題。添加到此版本中的「安全」措施會導致QuickTime本身進行身份驗證。雖然從瀏覽器到我的服務器的html文件和mp4實例的請求都滿足我提供的憑據...憑證的另一個請求會在QuickTime之後生成。我無法使用身份驗證偵聽器作爲瀏覽器的一部分並從QuickTime觸發事件來填充這些證書。

我在分析請求標頭時找到了第二組憑據的解決方法。我發現,當QuickTime在我的應用程序中發出請求時,GET頭中文件的路徑是一個相對路徑,導致基本路徑被Web服務器知道。當使用「文件」菜單中的「打開URL」選項從QuickTime發出相同請求時,該文件的整個絕對路徑位於GET標頭中。然後我可以檢查這個GET頭,如果它有一個絕對路徑,這個請求來自外部源並且需要憑證,否則它來自我的應用程序,並且不需要基本認證。