必須ディレクティブは、エージェントの配信設定によって異なります。Pendoがアプリケーションで完全に機能するために必須のディレクティブを把握するには、まずガイド配信設定を書き留める必要があります。その方法は以下のとおりです。
ソース |
説明 |
data.pendo.io |
イベント通信とセッションリプレイに必要です。 |
pendo-static-{{ SUB_ID }}.storage.googleapis.com |
ここにガイド構造ファイルを読み込みます。ガイドコンテンツを読み込んで編集するために必要です。
|
app.pendo.io |
ビジュアルデザインスタジオを使用する場合にのみ必要です。
|
フレームディレクティブの変更
ディレクティブ: frame-src
次のソースにより、iframeがサイトにPendoコンテンツを読み込むことが許可されます。
ソース |
説明 |
app.pendo.io |
ビジュアルデザインスタジオは、このURLから読み込まれます。ビジュアルデザインスタジオでガイドをデザインする場合にのみ必要です。
|
portal.pendo.io |
リッスンのアイデアポータルをiframe経由で読み込むことができます。
|
以下のソースを使用して、Pendoはサイト上のページを<frame>
内に読み込みます。クラシックデザイナーを使用している場合にのみ必要です。
ソース |
説明 |
app.pendo.io |
クラシックデザイナーがアプリケーションを読み込むPendoホスト。クラシックデザイナーでガイドをデザインする場合にのみ必要です。
|
Workerディレクティブの変更
ディレクティブ:worker-src
以下のソースを使用して、Pendoエージェントはworkerスレッドを開始し、アプリケーションへのパフォーマンスの影響を最小限に抑えることができます。
ソース |
説明 |
blob: |
Pendoエージェントは、WebWorkerを起動して、セッションリプレイのセッションキャプチャデータを圧縮して送信します。作業をWorkerに任せてセッションキャプチャのパフォーマンスを向上できます。
|
ビデオプロバイダー
動画の適切なロケーションがCSPで許可されていることを確認する必要があります。これらのロケーションは、ガイドで使用するビデオプロバイダーによって異なります。
ディレクティブ: frame-src
ソース |
プロバイダー |
https://players.brightcove.net |
Brightcove |
https://www.loom.com |
Loom |
https://web.microsoftstream.com |
Microsoft Stream (Classic)
|
https://{ORG_ID}.sharepoint.com |
Microsoft Stream(Sharepoint) |
https://player.vimeo.com |
Vimeo
|
https://play.vidyard.com |
Vidyard
|
https://fast.wistia.net |
Wistia
|
https://www.youtube.com |
YouTube
|
ディレクティブ:img-src
ソース |
プロバイダー |
https://cdn.loom.com |
Loomサムネイル |
Pendoバケット |
Microsoft Stream(クラシック)サムネイル
|
Pendoバケット |
Microsoft Stream(SharePoint上)サムネイル |
https://i.vimeocdn.com |
Vimeoサムネイル
|
https://cdn.vidyard.com および
https://cdn-cf.vidyard.com
|
Vidyardサムネイル
|
https://embed-ssl.wistia.com |
Wistiaサムネイル
|
https://img.youtube.com |
YouTubeサムネイル
|
ロケーションに基づく変更
このセクションでは、US1、EU、および日本のお客様を対象としたロケーションに基づくソースの変更について一覧表示します。これは、サブスクリプションがデフォルトのUS環境とは異なるデータ環境でホストされている場合にのみ関係します。Pendoにアクセスする際に使用するURLを確認すると、お客様のサブスクリプションがどのデータ環境でホストされているかを確認できます。
- デフォルトのUSデータ環境のURLは
app.pendo.io
です。
- US1データ環境のURLは
us1.app.pendo.io
です。
- EUデータ環境のURLは
app.eu.pendo.io
です。
- 日本のデータ環境のURLは
app.jpn.pendo.io
です。
CSPで指定する必要があるのは、1つのデータ環境のみです。つまり、この記事で前述した標準的なURL、またはこのセクションの他のデータ環境(US1、EU、または日本)のURLのみを使用してください。複数のデータ環境にURLを使用しないでください。
オリジナル
|
US1 |
app.pendo.io |
us1.app.pendo.io |
portal.pendo.io |
us1.portal.pendo.io |
data.pendo.io |
us1.data.pendo.io
|
cdn.pendo.io |
us1.cdn.pendo.io
|
pendo-io-static.storage.googleapis.com |
pendo-us1-static.storage.googleapis.com
|
pendo-static-{{ SUB_ID }}.storage.googleapis.com |
pendo-us1-static-{{SUB_ID}}.storage.googleapis.com
|
EU
オリジナル
|
EU |
app.pendo.io |
app.eu.pendo.io |
portal.pendo.io |
portal.eu.pendo.io |
data.pendo.io |
data.eu.pendo.io
|
cdn.pendo.io |
cdn.eu.pendo.io
|
pendo-io-static.storage.googleapis.com |
pendo-eu-static.storage.googleapis.com
|
pendo-static-{{ SUB_ID }}.storage.googleapis.com |
pendo-eu-static-{{ SUB_ID }}.storage.googleapis.com
|
日本
オリジナル
|
日本 |
app.pendo.io |
app.jpn.pendo.io |
portal.pendo.io |
portal.jpn.pendo.io |
data.pendo.io |
data.jpn.pendo.io
|
cdn.pendo.io |
cdn.jpn.pendo.io
|
pendo-io-static.storage.googleapis.com |
pendo-jp-prod-static.storage.googleapis.com
|
pendo-static-{{ SUB_ID }}.storage.googleapis.com |
pendo-jp-prod-static-{{SUB_ID}}.storage.googleapis.com
|
カスタムCNAMEに必要なディレクティブ
CNAMEでCSPを使用している場合は、PendoのサポートチームとCNAMEを設定する際に、以下のソースを既存のPendoの標準必須ディレクティブに追加します。CNAMEの設定が完了したら、ディレクティブを省略できます。
JavaScriptディレクティブの変更
ディレクティブ:script-src
画像ディレクティブの変更
ディレクティブ:img-src
以下のソースを使用して、Pendoがホストする画像をサイトに表示します。
ソース |
説明 |
content.pendo.example.com |
ガイドの画像はこのURLからダウンロードされます。
|
data.pendo.example.com |
イベントは、画像srcを使用してこのURLに送信されます。イベントをPendoに送信するために必要です。
|
app.pendo.io |
デザイナーを使用する場合にのみ必要です。
|
data: |
デフォルトのバッジ画像。バッジにカスタム画像を使用する場合は必要ありません。
|
データディレクティブの変更
ディレクティブ:connect-src
以下のソースを使用して、ページ上のスクリプトがPendoと通信します。
対応ガイドコンテンツ
Pendoは厳密なCSPディレクティブに対応していますが、ガイドコンテンツがお客様のCSP制限に対応しているかどうかは、お客様の責任でご確認ください。
style-src
およびscript-src
ディレクティブ内にunsafe-inline
が存在しない場合、ガイドのHTMLタブ内のインラインCSSおよびJavaScriptは正しく機能しません。予期しないガイドの表示を防ぐには、すべてのインラインスタイルとスクリプトをガイドコードブロックまたはテンプレートのCSSタブとJSタブに移動する必要があります。
最小限のCSPディレクティブ(インラインディレクティブなし)を適切に設定すれば、Pendoデザイナーでフィーチャーの表示やタグ付けができるようになります。X-Frame-Optionsプラグインにより、厳密なCSPを使用したガイド編集モードでデザイナーを使用できるようになります。デザイナーの外部で、X-Frame-Optionsプラグインをオフにしてガイドコンテンツをテストすることが重要です。
厳密なCSP対応コンテンツの例
基本的なコンセプトは、「unsafe-inline」のスタイル設定とJavaScriptをすべて削除することです。
たとえば、このHTMLボタン内のすべてのインラインスタイル設定とJavaScriptは次のようになります:
<button class="_pendo-guide-next_" style="color:blue;" onclick="pendo.onGuideAdvanced()">Next</button>
HTML
<button class="_pendo-guide-next_ blue-button">Next</button>
CSS
.bluebutton { color: blue; }
JavaScript
(function wireGuideAdvanceButton (step) { step && step.attachEvent(step.guideElement[0], 'click', function (e) { var advanceButton = pendo.dom(e.target || e.srcElement).closest('._pendo-guide-next_'); if (advanceButton.length) { pendo.onGuideAdvanced(); } }); })(step,guide);
Trusted Typesは、現在Chromiumベースのブラウザでのみサポートされている実験的なテクノロジーです。アプリケーションでTrusted Typesによって提供される追加のクロスサイトスクリプティング(XSS)の保護が必要な場合は、ディレクティブ:trusted-types pendo
をCSPヘッダーに追加します。Trusted Typesのサポートには、エージェントのバージョン2.184.0以降が必要です。
非公式のX-FRAME-OPTIONSヘッダーを使用する代わりに、公式のコンテンツセキュリティポリシー(CSP) レベル2仕様のframe-ancestorsディレクティブを使用することを強くお勧めします。
CSPに切り替えることができない場合でも、次の2つの方法のいずれかで、Pendoのアプリ内デザイナーを使用できます。
-
ブラウザプラグイン。以下のブラウザプラグインはサードパーティによって作成されたもので、Pendoはどの拡張機能も所有または管理していません。
-
ALLOW-FROM値の更新。Firefox 43で動作確認済みです。これは正式な規格ではないため、この値に対応していない可能性のあるさまざまな実装があります。app.pendo.ioのURIを指定する必要があります。ALLOW-FROMごとに1つのURIのみをセミコロンで区切って指定できます。
X-Frame-Options: ALLOW-FROM https://app.pendo.io
unsafeディレクティブの代替
unsafe-inline
とunsafe-eval
をscript-src
に追加しない場合、ビジュアルデザインスタジオ内からカスタムコードブロックをプレビューすることはできません。代わりに、次のいずれかを行う必要があります。
- ガイドを保存し、ビジュアルデザインスタジオを閉じて、ガイドの詳細ページからガイドをプレビューする。
- ガイドをステージングにプッシュし、ステージング環境でガイドを表示する。
ガイドでコードブロックまたはリソースセンターのインテグレーションを使用しない場合、これは影響しません。
注:コードブロックまたはリソースセンターのインテグレーションを使用したガイドを編集しているときに、開発コンソールにscript-src
のCSPエラーが表示される場合があります。このエラーは無視してかまいません。
unsafe-inline
をstyle-src
に追加しない場合、unsafe-inline
を、キーinlineStyleNonce
を使用してエージェント初期化メソッドに渡されるnonceに置き換える必要があります。これについては、ガイドのAPIドキュメントを参照してください。エージェントとビジュアルデザインスタジオは、作成されたすべてのインラインスタイルにこのnonceを追加します。nonceの詳細については、MDNのコンテンツセキュリティポリシー(CSP)ドキュメントのNonceを参照してください。
その他のリソース