質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2548閲覧

[JavaScript] WindowsシステムのHTTP認証処理が成功/失敗/中止されたことをJavaScriptから知りたい

sayhorn

総合スコア12

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/06/05 10:39

###前提・実現したいこと
組み込み機器のソフト開発をしています。
この機器には設定用インタフェースとしてWebインタフェースが用意されています。
このWebページはHTTP認証で保護されており、ログイン時にはユーザー名とパスワードが必要です。
Windows7 でこのWebページにアクセスすると、「Windows セキュリティ」ダイアログが表示されます。
この「Windows セキュリティ」ダイアログが表示されたこと、およびこのダイアログでOK/キャンセル/閉じるのいずれかが選択されたことをJavaScriptから知りたいです。

###発生している問題・エラーメッセージ
「Windows セキュリティ」ダイアログで、キャンセルを何度かクリックしてから正しい情報を入力してOKをクリックすると、Webページが一部正しく表示されません。
上記のタイミングを知ることができれば、そのタイミングでlocation.reload()するなど対策が取れると考えています。

###ソースコード
ソースコードは記載できませんが、概要を記載します。
WebページはJavaScriptによって、機器と通信しながら動的に表示しています。
初期表示は window.onload イベントハンドラで表示処理を実装しています。
制限として、JavaScriptでHTTP認証処理自体を実装することはできません。
(技術的にというよりは、工数と工期の問題で難しいだろうと判断しています)

###補足情報(言語/FW/ツール等のバージョンなど)
調べたところ、「Windows セキュリティ」ダイアログをキャンセルすると、そのたびにウィンドウフォーカスが元のWebページに戻り、そのたびにwindow.onloadの中に記述している処理が少しずつ進んでいました。
そして、3回ほどキャンセルするとwindow.onloadの処理は全て終了したことになっていますが、Webページの表示は一部不完全です(=現象の発生)。
たとえばですが、「Windows セキュリティ」ダイアログによるHTTP認証が失敗するか成功するまでの間は処理を停止するようなことができれば、その方法でも解決できそうです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutok

2015/06/09 06:44

basic認証が終わってないのに、window.onloadが動くという部分が良くわかりませんでした。 basic認証されているページが、<iframe>で埋め込まれているのでしょうか? ページ設計をどのようにされているのか教えてください。
guest

回答2

0

ベストアンサー

settimeoutは遅延時間0に指定する事で、「window.onloadの中に記述している処理が少しずつ進む」という現象を回避できるのでは?と思いました。

サーバサイドへのアクセスに関しては、コメントで明記されている通りです。

レイアウトくずれを回避するという事であれば、htmlは最初、非表示のdisplay:noneの状態にしておいて、onloadの最後の処理でDOM操作してやって表示してやれば回避できないでしょうか?

投稿2015/06/10 01:00

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sayhorn

2015/06/14 14:14

> chiku_様 ご返信が遅れまして申し訳ありません。以下にご報告とお礼を申し上げます。 settimeoutの件は結果的には効果がありませんでした。 ただし、サーバサイドへのアクセスについては記載のとおり実装し、これによって「Webページが正しく表示されない現象」を回避することができました。 通信をしてみればいいというのは、とてもシンプルな解ですが意外と気付けないものですね。私の経験値が低いからかもしれませんが。。。 この度は貴重な気付きを与えていただきありがとうございました。 chiku_様のアドバイスが直接の解決に繋がりましたので、ベストアンサーとさせていただきます。 誠にありがとうございました。
guest

0

現象を回避できるか分かりませんが、現状のwindow.onloadの処理をsettimeoutしてやる事で解決しませんでしょうか?
または、サーバーサイドではベーシック認証の情報を保持しているはずなので、Javascriptでサーバーサイドにアクセスしてベーシック認証済みかどうか判定できる情報を取得。これをsetintervalなどで行い、ベーシック認証済みかどうか判定を行うなど。。

投稿2015/06/09 10:43

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sayhorn

2015/06/10 00:03

> chiku_様 アドバイスありがとうございます。 settimeoutによる遅延は最初に検討しましたが、 ユーザがどのタイミングでダイアログを操作するか、その結果がどうなるのか、また、システムがダイアログにフォーカスを当てている時間およびダイアログからフォーカスが外れている時間が確定できないため、遅延させる最適な時間が設定できないと考え、実施に至っていません。 ※もっとも、リロードすれば正しくページが表示されるので「大体こうなるだろう」という予測をもって他の可能性を切り捨て、障害発生時はユーザ運用で回避するという選択は可能ですが、それは現実的な対策ということで今は度外視したいです。 サーバサイドの情報にアクセスするということですが、処理としては(何でもいいからHTTPリクエストを投げるために)XHRでアクセスしてレスポンスのステータスコードを参照し、Unauthorizedなら更に処理を遅延し、OKなら処理を進めるようなイメージでしょうか? ※ちなみに、サーバサイドは組込み向けにチューンされたLinuxで、サービスはlighttpdで提供されています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問