0

我正在使用运行 Safari 4.0.3 的 Mac OS X Leopard 10.5.8。我的跨平台 Java 应用程序有一个嵌入式的本机 Web 浏览器和它自己的内部 Web 服务器。每当浏览器尝试提供需要快速时间的文件(mov、mp4、m4v 等)时,我都会得到一个用户名/密码凭据对话框。我可以看到每个请求都通过并获得身份验证(至少 html 文件已经过身份验证)......然后我看到了对 mp4 的请求,但它永远不会得到身份验证。就好像 QuickTime 从不交出凭据并尝试自行进行身份验证一样。

我自己在内部传递了这些凭据,并且所有其他文件类型都可以正常使用基本身份验证。我什至可以使用 QuickTime 7.6.4 和完全相同的文件在 Windows 上运行该应用程序,并且它们可以按预期播放(在这种情况下,Windows 将 IE8 作为嵌入式浏览器运行)。

QuickTime 7.6.4 和 Safari 4 上的基本身份验证是否存在已知问题?我在网上搜索了一下没有运气。

4

1 回答 1

0

这不是 Safari 4 的问题,而是 QuickTime 7.6.4 的问题。此版本中添加的“安全”措施会导致 QuickTime 本身进行身份验证。尽管从浏览器到我的服务器对 html 文件和 mp4 的请求对我提供的凭据感到满意...在 QuickTime 之后生成了另一个凭据请求。我无法使用作为浏览器一部分的身份验证侦听器和从 QuickTime 触发的事件来填写这些凭据。

我在分析请求标头时发现了我对第二组凭据的解决方法。我发现当 QuickTime 从我的应用程序中发出请求时,GET 标头中文件的路径是相对路径,因为 Web 服务器知道基本路径。当使用“文件”菜单中的“打开 URL”选项从 QuickTime 发出相同的请求时,文件的整个绝对路径位于 GET 标头中。然后我可以检查这个 GET 标头,如果它有一个绝对路径,这个请求来自外部源并且需要凭据,否则它来自我的应用程序并且不需要基本身份验证。

于 2009-11-03T15:20:03.333 回答