Amplitudesは
使い
データ送信の
ReportingObserver とは ?
CSP には、report-to
ヘッダが
report-to
あたりのReportingObserver
も
現在、Editor’s Draft
ですが、
私は
ReportingObserver で 収集可能な 情報
Amplitude に
確認にMAC の<wbr>Google Chrome 85.0.4183.83
です。
csp-violation CSPの
違反レポートです。 deprecation
将来のリリースで 機能を 停止する APIが 使用されている ことを 示す レポートです。
Reporting API - Web APIs | MDN を
実施した こと
Amplitude に
JavaScript に 以下を 追加
index.tsx
に、
reportsData
と
{buffered: true}
に
- index.tsx
// ----------------------------------------------------- //@ts-ignore const observer = new ReportingObserver((reports, options) => { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "Reporting-API", reportsData: reports }); }, {buffered: true}); observer.observe();
Google Tag Manager の 設定
GTMイベントトリガー
続いて、GTMの イベントトリガーを 作ります。 JavaScript側で "Reporting-API"
を指定していますので、 名称を 合わせます。
カスタムhtmlタグ
以下のようなカスタムHTMLタグを 追加しました。
HTMLの内容は 以下の 通りです。 設定タグには、<script> var reports = {{reportsData}}; for (var i = 0; i < reports.length; i++) { // プロパティを渡してイベント送信 var report = reports[i]; var body = report.body; body["report.url"] = report.url; amplitude.getInstance().logEvent(report.type, JSON.parse(JSON.stringify(body))); } </script>
Amplitude init
という Amplitude の 初期化タグを、 この タグの 発行前に 発行するようにし、 この タグ自体は、 Reporting-API
イベントを トリガーに 発行するようにしました。
これで、
JSON.parse(JSON.stringify(body)
あたりの
補足. securitypolicyviolation を Listener に 登録して 記録する。
ReportingObserver をsecuritypolicyviolation
EventListerを
CSP レポートの
// Content Security Policy document.addEventListener("securitypolicyviolation", (e) => { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "csp-report", securitypolicyviolation: { blockedURI: e.blockedURI, columnNumber: e.columnNumber, documentURI: e.documentURI, effectiveDirective: e.effectiveDirective, lineNumber: e.lineNumber, originalPolicy: e.originalPolicy, referrer: e.referrer, sourceFile: e.sourceFile, statusCode: e.statusCode, violatedDirective: e.violatedDirective, }, }); });
参考
以上です。
コメント