Content Security Policy (CSP) ist ein Sicherheitsmechanismus für Browser, der steuert, welche externen Quellen – Skripte, Schriftarten, Stylesheets und API-Verbindungen – auf Ihrer Webseite geladen werden dürfen. Wenn Ihre Seite bereits ein CSP hat und Sie das Document360-Widget einbetten, müssen Sie die vertrauenswürdigen Quell-URLs des Widgets zu Ihrer Richtlinie hinzufügen. Ohne diese Ergänzungen blockiert der Browser Widget-Ressourcen, was Symptome wie fehlende Scrollleisten, blockierte Schriftarten, fehlgeschlagene API-Aufrufe oder CSP-Verstöße in der Browserkonsole verursacht.
Bevor du anfängst
- Bestätigen Sie, ob Ihre Wissensdatenbank in der US- oder EU-Region gehostet wird – die vertrauenswürdigen Quell-URLs unterscheiden sich je nach Region.
- Stellen Sie sicher, dass Sie Zugriff auf die HTML- oder Serverkonfiguration Ihrer Seite haben, um den Header oder
<meta>TagContent-Security-Policyzu bearbeiten. - Identifizieren Sie die Nonce-Variable, die bereits in Ihrem System verfügbar ist. Sie müssen in den Codebeispielen diesen Wert ersetzen
"document360Nonce".
Wie man vertrauenswürdige CSP-Quellen für das Document360-Widget hinzufügen
Aktualisieren Sie Ihre Inhaltssicherheitsrichtlinie
Füge die folgenden Quellen zu deinen connect-src, script-src-elem, font-src, und Direktiven style-src-elem hinzu.
Für US-Nutzer
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="
connect-src
https://2ql92r65q8-dsn.algolia.net/
https://apihub.us.document360.io/
https://api.us.document360.io/
https://gateway.us.document360.io
https://*.algolianet.com
https://js.monitor.azure.com;
script-src-elem
'nonce-document360Nonce'
https://cdn.us.document360.io
https://*.algolianet.com
https://cdn.jsdelivr.net
https://cdnjs.cloudflare.com
https://floik.com/exe/
*.floik.com;
font-src
https://fonts.gstatic.com
https://cdn.us.document360.io;
style-src-elem
'unsafe-inline'
'unsafe-eval'
https://cdn.us.document360.io/
https://cdn.jsdelivr.net
https://fonts.googleapis.com;">
</head>
</html>
Ersetze "document360Nonce" sie durch die bereits vorhandene Nonce-Variable in deinem System.
Für EU-Nutzer
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="
connect-src
https://jx9o5re9su-dsn.algolia.net
https://apihub.document360.io/
https://api.document360.io/
https://gateway.document360.io
https://*.algolianet.com
https://js.monitor.azure.com;
script-src-elem
'nonce-document360Nonce'
https://cdn.document360.io
https://*.algolianet.com
https://cdn.jsdelivr.net
https://cdnjs.cloudflare.com
https://floik.com/exe/
*.floik.com;
font-src
https://fonts.gstatic.com
https://cdn.document360.io;
style-src-elem
'unsafe-inline'
'unsafe-eval'
https://cdn.document360.io/
https://cdn.jsdelivr.net
https://fonts.googleapis.com;">
</head>
</html>
Ersetze "document360Nonce" sie durch die bereits vorhandene Nonce-Variable in deinem System.
Die Algolia-Host-URL in connect-src ist umgebungsspezifisch. Wenn du dir über den genauen Host deiner Umgebung unsicher bist, verwende stattdessen die Wildcard https://*.algolia.net in deiner connect-src Direktive. Dies deckt alle Algolia-Umgebungen ab und verhindert CSP-Fehler durch nicht übereinstimmende Hostnamen.
Aktualisiere deine Widget-Konfiguration
- Gehe zu Verbindungen () > Knowledge Base-Widget in der linken Seitenleiste deines Knowledge Base-Portals.
- Wählen Sie das erforderliche Widget aus und klicken Sie auf Bearbeiten ().
- Im Reiter "Konfigurieren und verbinden " erweitern Sie das JavaScript-Akkordeon des Widgets unter der Verbindungsgruppe .
- Aktualisieren Sie Ihr Widget-Skript mit dem unten gezeigten Nonce-Parameter.
Für US-Kunden
<!-- Document360 knowledge base assistant start -->
<script nonce="document360Nonce">
(function (w,d,s,o,f,js,fjs) {
w['JS-Widget']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
}(panel, document, 'script', 'mw', './widget.js'));
mw('init', { nonce:'document360Nonce',apiKey: 'YOUR_API_KEY' });
//var jQuery_2_2_4 = $.noConflict(true);
</script>
<!-- Document360 knowledge base assistant end -->
Für EU-Kunden
<!-- Document360 knowledge base assistant start -->
<script nonce="document360Nonce">
(function (w,d,s,o,f,js,fjs) {
w['JS-Widget']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
}(panel, document, 'script', 'mw', './widget.js'));
mw('init', { nonce:'document360Nonce',apiKey: 'YOUR_API_KEY' });
//var jQuery_2_2_4 = $.noConflict(true);
</script>
<!-- Document360 knowledge base assistant end -->
Ersetze "document360Nonce" sie durch die bereits vorhandene Nonce-Variable in deinem System. Das Widget ist nun so konfiguriert, dass es sicher innerhalb Ihrer CSP-Umgebung betrieben wird.
FAQ
Warum erscheint die Scrollleiste im Knowledge Base-Widget nicht?
Dies wird typischerweise durch eine CSP-Regel verursacht, die die Domain des Widgets blockiert. Wenn deine Domain in deinem CSP nicht erlaubt ist, kann das verhindern, dass die Scrollfunktion richtig funktioniert. Füge die Domain-URL zum CSP deiner Anwendung hinzu, um das Problem zu lösen.
Muss ich CSP-Quellen hinzufügen, wenn ich keinen Nonce benutze?
Ja. CSP-Quellen für connect-src, font-src, und style-src-elem sind unabhängig davon erforderlich, ob du einen Nonce verwendest oder nicht. Der Nonce ist speziell dafür script-src-elem erforderlich, damit das Widget-Skript ausgeführt werden kann. Ohne den Nonce musst du vielleicht für Skripte verwenden 'unsafe-inline' , was nicht empfohlen wird.
Was ist der Unterschied zwischen den US- und EU-CSP-Konfigurationen?
Die US- und EU-Konfigurationen unterscheiden sich in den CDN- und API-Endpunktdomänen. US-Nutzer zeigen auf cdn.us.document360.io und api.us.document360.io, während EU-Nutzer und api.document360.ioverwendencdn.document360.io. Die Verwendung der URLs der falschen Region führt zu blockierten Ressourcen und einem nicht funktionsfähigen Widget.