2009-07-19 51 views
8

我很抱歉,有一个类似的问题,但我想更广泛地问一下。抑制浏览器的认证对话框

有没有什么办法可以根据Web应用程序的客户端来确定请求资源是否会返回401状态码并导致浏览器显示丑陋的身份验证对话框?

或者,有没有什么办法在flash中加载mp3音频资源,在401状态代码的情况下无法看到,而不是让浏览器显示一个丑陋的对话框?

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

重要的是无形失败,因为该应用程序将有多种音频资源列表尝试,它是没有意义的打扰用户尝试时,有许多可用的其他一个身份验证。解决方案在客户端工作非常重要,因为有问题的mp3来自我的控制之外的各种服务器。

回答

1

我与twitter api有同样的问题 - 任何受保护的用户都需要客户端进行身份验证。

我能想出的唯一解决方案是加载页面serverside并返回一个url列表与他们的http响应代码。

+1

Twitter API有一个`suppress_response_codes`参数,它将强制响应具有200 OK状态。 – 2009-12-24 08:17:28

0

“有什么办法都确定在Web应用程序的客户端,如果请求的资源将返回401状态代码,并导致显示一个丑陋的身份验证对话框的浏览器吗?”

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

0

只是将您对资源的访问包装在一起,这些资源可能需要对Ajax调用进行身份验证。你可以捕获响应代码,并使用JavaScript来做你想做的任何事情(即播放声音)。如果响应代码是正常的,那么使用javascript将用户转发到资源。

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

+0

Ajax不适用于不同的域,所以只有在页面和资源位于同一个域时才能使用。 – zaius 2009-07-19 18:17:43

0

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

如果使用的URLRequest对象来获取你要得到每一个请求到每一个未设置策略文件以允许这些类型的请求,服务器从Flash安全性错误的文件。 AIR允许这些请求,因为它基本上是客户端。这是有道理的,因为它是安装应用程序和访问网页的区别。

我讨厌提供无法回答的问题,但如果您无法进行服务器端调用,并且您正在碰到一系列“未知”服务器,则这将是艰难的锄路。

但也许我误解,你只是想链接到的文件和阻止用户获得不良链接,或者是你想实际加载的文件吗?

+0

谢谢你的时间,不管我是否能得到我想要的。 是的,我正在尝试加载它们并播放它们。尽管有任何特定的url都可以工作并不重要,因为我有很多尝试。 – 2009-07-20 01:53:14