Secure Contexts

とは

そのコンテキストがセキュアである事を示す。ブラウジングコンテキスト(Window)に限らず、ワーカー(Worker)も対象。

Secure Contextの場合、そうでない場合に何ができて何ができないかは定義されていないが、例えばService WorkerはSecure Contextの場合にのみ作成およびアクセス可能。どれをSecure Contextでのみ実行可能にするかはブラウザ毎に違いがある模様。

ケース

Secure Contextを無効にする

iframeのsandbox属性やCSPのsandboxディレクティブでSecure Contextが無効化される。allow-secure-contextを指定する事で、Secure Contextのみ有効にする事ができる。もともとSecure Contextでない場合は変化は無い。

これらは今は実験的で、主要なブラウザではサポートされておらずsandbox環境でもSecure Contextが有効になっている。十分な告知無しにいきなりhttps時にSecure Contextでなくなるのは色々起こりそうなので、今のところこの仕様は無くなりそうな気がする。

Secure Contextかどうかを確認する

isSecureContextという読み取り専用のbool型のIDL属性が用意されており、それでwindowやworkerがSecure Contextかどうか確認できる。

Secure Contextである条件

以下のすべての条件を満たす場合はSecure Context。

どうも主要なブラウザでこの通りに実装しているブラウザは無さそうなので、もしSecure Contextに依存した何かをするなら綿密なテストが必要そう。

参考