7
1

More than 1 year has passed since last update.

WebCrypto APIがundefinedになることがあるのは仕様でした

Last updated at Posted at 2022-01-25

WebCrypto API (window.crypto.subtle)が'undefined'になって悩んで色々調べたら
WebCrypto APIは「Secure Contexts」でないと使えないとのことだった。

詳細

MDN:

WebCrypto APIが非安全なコンテキストで使用できないことを問題にする話は、
chromiumやらFireFoxのIssueに出てくるが
既にW3Cで決めていることらしいのでそこを変えない限りは各ブラウザは仕様通りということなので正常な動作。

このコメントみたいに社内システムで使おうとして、引っ掛かりました。

MDNには上記の通り「安全なコンテキストに制限されている機能」のページはあるのだけど、
「WebCrypto API」のページには書いていないのではまり期間が長くなってしまった。

【追記】
英語版のCrypto/subtleにはでかでかと書いてあるが、日本語版だと消えている。

Secure Contextsとは

これを読めばいいけど雑に言うと、
「httpsかwssもしくはホストが自分自身(アドレスが127.0.0.1/8(ip6だと::1/128)かfile://」ならSecure Contexts。
localhost(127.0.0.1)で動くからって別サーバーに置いたとたんに動かなくなるとか起こる(起きた)。

おまけ

これが原因だったかわからないが、こんなことが調べている最中に見つかったりした

おまけ2(2022/2/10追記)

MDN英語版だとCrypto.subtleページの先頭に"Secure contextじゃないと使えないぞ"って注意書きが出てきてくれる。

残念ながら日本語版だと書いていない。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1