2009-10-19 27 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头,如果它有一个绝对路径,这个请求来自外部源并且需要凭证,否则它来自我的应用程序,并且不需要基本认证。