最近のモダンブラウザには、ブラウジングに使う経路を自動的に変更する、Proxy Auto Configという機能を備えています。これを設定するファイルを通称PACファイルというのですが、Javascriptの実装で作られています。
このPACファイルの作成には、デバッグとしてAlertメソッドを利用して変数設定の値があっているかの確認し、PACファイルを完成させていくのが普通でした。
でした。というのは、最近のWindows10ではいつの間にかデバッグ用のAlertメソッドが利用できなくなっており、エラーを出力するようになったようです。
動作の確認に非常に苦労したので、備忘録としてPACの動作を記しておきたいと思います。
まず、PACを動作させるためにはWebサーバー上にPACファイルを配置する必要があります。Windows10にはIISを簡単にインストールできるので、それを利用して動作確認を行いました。
・alertメソッドは使えない。
この調査の原因となったalertメソッドの動作です。
おそらく内部でExceptionが発生するようになったと思われ、このメソッドの後のコードは動作しない様でした。
以下の形式のPACファイルを少しずつ改変して動作を確認していきました。
returnはDIRECTで直接接続、PROXY localhost:9999はダミーで、うまくつながらないようにするために指定しています。
・toLowerCase、toUpperCaseメソッドは利用可能
この後の確認にも出てくるのですが、PACは基本Javascriptの文字列比較となるため、大文字小文字を判断します。必要に応じてtoLowerCase、toUpperCaseを利用して大文字小文字で動作が変わらないようにしておきましょう。
上記PACを利用し以下URLにアクセスすると画面は表示できました。(画像は別のHostにあるので表示されていません。)
https://www.microsoft.com/ja-jp
・大文字が入ったリテラルがあるとヒットしなくなる
これはブラウザの問題なのか、PACの問題なのか判断つかなかったのですが、アドレス欄に入力したURLは小文字に変換され評価されるようです。
アドレス欄に以下のように大文字を含めて動作確認してみましたが、小文字で評価されているようでした。
・ポートを指定しない場合、ポート設定は評価対象外となる
ポートを設定していないアドレスをurlの比較対象にした場合、ポートが入ったURLでアクセスしても成功しました。
アクセスしたアドレスは以下の形です。
最後の/が評価されていない可能性がありますね。
http://veiw-localhost.com:8111/
・ポートを含めた評価を行うと、ポート番号なしは一致しないものとして評価される
ポート番号を含んだ比較対象とを指定しておくと、ポート番号が一致しないケースではアクセスできませんでした。
当然といえば当然ですが、文字列が一致しないからですね。
パターン網羅にはなっていないのですが、この内容を理解するだけでもある程度のPACファイルを作成できるかと思います。
このほかのケースや使えるメソッドを研究し、最適なPACファイルを検討してみてください。
音楽:fugl