2009-07-19 20 views
8

似たような質問があることをお詫び申し上げますが、もっと広く質問したいと思います。ブラウザの認証ダイアログを表示しない

リソースを要求すると401ステータスコードが返され、ブラウザに醜い認証ダイアログが表示される場合、Webアプリケーションのクライアント側で判断する方法はありますか?

または、ブラウザに醜いダイアログを表示させるのではなく、401状態コードの場合に目に見えない形で失敗するフラッシュでmp3オーディオリソースをロードする方法はありますか?

URLRequestオブジェクトの「認証」プロパティを設定すると、Adobe Airランタイムで認証が行われなくなりますが、このプロパティはFlashランタイムにはありません。クライアント上で動作するすべてのソリューションが行います。 XMLHttpRequestは、質問のリソースが異なるドメインにあるため、機能しない可能性があります。

アプリケーションには試してみようとする多くのオーディオリソースのリストがあり、利用可能な他のオーディオリソースが多数ある場合には、試して認証するようにユーザーを迷惑をかけてしまうため、目に見えないエラーが発生することが重要です。問題のmp3は私のコントロール外のさまざまなサーバーから来ているので、ソリューションはクライアント上で動作することが重要です。

答えて

1

私はtwitter apiで同じ問題を抱えています。保護されているすべてのユーザーは、クライアントの認証が必要です。

私が思いつくことができる唯一の解決策は、ページserversideをロードして、http応答コードでURLのリストを返すことでした。

+1

Twitter APIは 'suppress_response_codes'パラメータを持っています。これはレスポンスを強制的に200 OKステータスにします。 –

0

"リソースを要求すると401ステータスコードが返され、ブラウザに醜い認証ダイアログが表示される場合、Webアプリケーションのクライアント側で判断する方法はありますか?"

いいえ、一般的ではありません。 401応答は、サーバーが認証が必要であることを示すための唯一の標準的な方法です。

0

Ajaxコールの認証が必要なリソースへのアクセスをラップするだけです。あなたはレスポンスコードをキャッチし、javascriptを使って何でもしたい(つまり、そのサウンドを再生する)ことができます。しかし、応答コードが問題ない場合は、javascriptを使用してユーザーをリソースに転送します。

ほとんどの場合、この方法ではサーバーに負荷がかかります(状況によっては同じリソースを何度か読み込む必要があります)が、動作するはずです。 XMLHttpRequestの使い方に関する良いチュートリアルには、必要なものすべてが含まれているはずです。例を見てくださいhttp://www.xul.fr/en-xml-ajax.html

+0

Ajaxは異なるドメイン間では機能しないため、ページとリソースが同じドメインにある場合にのみ動作します。 – zaius

0

ファイルを取得するためにURLRequestを使用している場合は、エレガントなエラー処理以外にも実行していますが、FlashとAIRのランタイムには基本的な違いがあります。

URLRequestオブジェクトを使用してファイルを取得する場合は、要求ごとにFlashからセキュリティエラーが発生し、このような要求を許可するポリシーファイルを設定していないすべてのサーバーにアクセスします。基本的にクライアントであるため、AIRはこれらの要求を許可します。これはアプリケーションのインストールとWebページの訪問の違いなので意味があります。

私は無回答を提供するのが嫌いですが、サーバー側の呼び出しを行うことができず、「知られていない」サーバーの範囲に当てはまる場合は、厄介な道のりになります。

しかし、私は誤解している可能性があります。ファイルにリンクして、ユーザーに悪いリンクができないようにしようとしているのですか、実際にファイルを読み込もうとしていますか?

+0

私が望むものを得ることができるかどうかにかかわらず、あなたの時間をありがとう。 はい、ロードして再生しようとしています。特定のURLが動作することは重要ではありません。私は多くのことを試しています。 –

関連する問題