抑制浏览器的身份验证对话框

时间:2009-07-19 01:09:28

标签: javascript flash http-authentication suppress

我很抱歉已经有类似的问题,但我想更广泛地提出这个问题。

如果请求资源返回401状态代码并导致浏览器显示丑陋的身份验证对话框,是否有任何方法可以在客户端确定Web应用程序?

或者,是否有任何方法可以在flash中加载mp3音频资源,在401状态代码的情况下无法无形地失败,而不是让浏览器显示丑陋的对话框?

如果我设置了URLRequest对象的“authenticate”属性,但Adobe Air运行时将禁止身份验证,但此属性不在Flash运行时。任何适用于客户端的解决方案都可以。 XMLHttpRequest不太可能有效,因为问题中的资源将位于不同的域中。

重要的是无形失败,因为应用程序将包含许多要尝试的音频资源的列表,当有许多其他可用时,打扰用户尝试对其进行身份验证是没有意义的。重要的是该解决方案在客户端上工作,因为所讨论的mp3来自我无法控制的各种服务器。

4 个答案:

答案 0 :(得分:1)

我遇到了与twitter API相同的问题 - 任何受保护的用户都需要客户端进行身份验证。

我能想到的唯一解决方案是加载服务器页面并返回带有http响应代码的URL列表。

答案 1 :(得分:0)

“如果请求资源将返回401状态代码并导致浏览器显示丑陋的身份验证对话框,是否有任何方法可以在客户端确定Web应用程序?”

不,不是一般的。 401响应是服务器指示认证是必要的唯一标准方式。

答案 2 :(得分:0)

将您对可能需要对Ajax调用进行身份验证的资源的访问权限包装起来。您可以捕获响应代码,并使用javascript做任何您想做的事情(即播放该声音)。但是如果响应代码没有问题,那么使用javascript将用户转发到资源。

这种方法很可能会在服务器上产生更多的负载(在某些情况下,您可能不得不求助于多次加载相同的资源),但它应该可以工作。任何有关如何使用XMLHttpRequest的好教程应该包含您所需要的一切。例如,请查看http://www.xul.fr/en-xml-ajax.html

答案 3 :(得分:0)

如果您使用URLRequest来获取文件,那么您运行的不只是优雅的错误处理,而是在Flash和AIR运行时遇到了根本区别。

如果使用URLRequest对象检索文件,则每次请求时都会从Flash获取安全错误,而每个服务器都没有设置策略文件以允许这些类型的请求。 AIR允许这些请求,因为它基本上是客户端。这是有道理的,因为它是安装应用程序和访问网页之间的区别。

我讨厌提供无应答,但是如果你不能进行服务器端呼叫,并且你正在使用一系列“未知”服务器,那么锄头将是一条艰难的道路。 / p>

但也许我误解了,您是只是尝试链接到文件并阻止用户获取错误的链接,或者您是否尝试实际加载文件?