ヘルプ APM RUM スクリプトエラー

リアルユーザー監視(RUM)のスクリプトエラー

スクリプトエラーはバグではなく、悪意のある攻撃に対してサイトを守るための検知機能です。サードパーティドメインからJavaScriptファイルがロードされた際に発生します。

スクリプトエラーの発生原因

スクリプトエラーは外部スクリプトが正常に実行されない問題があった際に発生します。

これらエラーは下記のような様々な原因により発生します。

クロスオリジンリソース共有(CORS)問題:セキュリティ上の制限により、他のドメインのサードパーティスクリプトのロードと実行をブラウザーがブロックします。

ネットワーク問題:ネットワークのタイムアウトや接続問題により、サードパーティスクリプトのロードに失敗した場合、スクリプトエラーが発生する可能性があります。

不正確な連携:サードパーティスクリプトがWebサイトやアプリケーションに正常に連携されていない場合、スクリプトエラーが発生します。誤ったスクリプトタグの配置、スクリプトロード順番の誤り、依存関係の未設定などにより発生します。

サードパーティスクリプトバグ:構文エラー、論理的エラー、その他問題によりサードパーティスクリプト自体にエラーにより、サイトのスクリプトエラーにつながります。

ブラウザー互換性問題:JavaScriptのような、すべてのブラウザー、ブラウザーバージョン、で正常に機能しないサードパーティスクリプトにより、特定のケースにおいてスクリプトエラーが発生します。

Site24x7でのスクリプトエラーが処理されるしくみ

Site24x7では、window.onerror ハンドラーを使用して、カスタムなwrapperを作成してJavaScriptエラーを処理します。

しかし、Webアプリケーションのコードがアドレスバー以外のドメインにホストされているスクリプトがロードされると、 window.onerror イベントハンドラーがエラーを取得しますが、完全なスタックトレースやデバッグのためのメッセージコンテキストは取得されません。スタックトレースではSite24x7 wrapperのキャプチャのみ表示されます。

同オリジンポリシーを制御する方法

クライアント側の処理

スクリプトエラーの正確なファイルとメソッドをキャプチャするため、scriptタグに次を追加してください。

<script crossorigin="anonymous" src="//another-domain.com/index.js"></script>

サーバー側の処理

サードパーティドメインで、次のヘッダーをjsファイルに設定してください。

Access-Control-Allow-Origin: *

ワイルドカード「*」はすべてのサイトにクロスサイトリクエストを許可することを表します。また次のようにドメイン群を指定することもできます。
Access-Control-Allow-Origin: http://origin-domain.com

クライアントでのスクリプトエラーの表示

  1. Site24x7にログインします。
  2. [RUM]→[JavaScriptエラー]→[エラー]に移動することで、次のスクリーンショットのとおり、JavaScriptエラー内のスクリプトエラーを表示します。