1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Uncaught TypeError: self.crypto.randomUUID is not a functionの原因と対処法

Posted at

エラーの内容

JavaScriptでcrypto.randomUUID()を使用してuuidを生成しようとした際、以下のエラーが発生しました。ここではその原因と対策を記録しておきます。

Uncaught TypeError: self.crypto.randomUUID is not a function

エラーの発生状況

このエラーがテストページでのみ発生していたため、不思議に思って検証したところ、HTTPS環境で実行した場合は発生しないが、HTTP環境では発生するという特徴がありました。

そもそもcryptoとは

Crypto インターフェイスは、現在のコンテキストで利用できる基本的な暗号機能を表します。 これは、暗号強度の強い乱数生成器と暗号プリミティブへのアクセスを許可します。

MDN: Crypto

cryptoはJavaScriptの組み込みオブジェクトで、暗号関連の機能を提供してくれます。その中のrandomUUID()メソッドは、HTTPS環境またはlocalhostのようなセキュアコンテキストでのみ利用可能な仕様になっているそうです。

対処法

HTTPS通信を使用する

特別な理由がない限り、HTTPS通信を使用するのが適切です。ローカル環境では、http://localhostを使用していればエラーは発生しません。

一応、乱数を組み合わせるなどして無理やりuuidを自作することも可能ですが、そもそもHTTP通信しかできない環境でuuidを扱うべきではないと思われます。

1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?