Feedjoltdocs
DesenvolupadorsWidget

Content Security Policy del widget

Les directives exactes de Content Security Policy que necessita el widget de Feedjolt: script, connect, frame, img, style i font, mes un exemple de CSP estricta.

Si el teu lloc té una Content Security Policy estricta, el widget necessita permisos explícits. Sense ells, el script del loader, l'iframe i les peticions d'assets seran bloquejats.

Directives mínimes

script-src  https://www.feedjolt.com
connect-src https://www.feedjolt.com
frame-src   https://www.feedjolt.com
img-src     https://cdn.feedjolt.com data: blob:
style-src   'unsafe-inline'
font-src    https://www.feedjolt.com data:

Si ja fas servir default-src 'self', les directives de dalt són addicions - no reemplacen les existents.

Notes per directiva

script-src

El loader del widget es descarrega de feedjolt.com. És un únic script petit; el JS de l'iframe és dins l'iframe i fa servir la seva pròpia CSP.

Si requereixes nonces per a scripts inline (sense 'unsafe-inline'), el loader és extern - no cal nonce. No has d'etiquetar el loader amb un nonce.

connect-src

El loader fa alguns pings de telemetria (esdeveniments d'obertura/tancament per al nostre logging anti-abús) a feedjolt.com. Les crides API de l'iframe ocorren dins l'iframe i fan servir la seva pròpia CSP, no la teva.

frame-src

L'iframe és <iframe src="https://www.feedjolt.com/widget?...">. Sense això, l'iframe es bloqueja a la capa de framing i el widget mai s'obre.

img-src

Els logos de l'espai, els adjunts de posts i les captures del changelog se serveixen des de cdn.feedjolt.com. data: i blob: cobreixen les icones SVG i les imatges pujades durant la previsualització.

style-src

El script del loader injecta un petit bloc <style> per posicionar el botó. Si no pots permetre 'unsafe-inline', hi ha un fallback - amaga el nostre botó amb el teu propi CSS i crida window.feedjolt.open() des del teu botó personalitzat.

font-src

El widget fa servir Geist com a font per defecte. Dins l'iframe, les fonts vénen de feedjolt.com.

Exemple de CSP estricta

Una CSP de producció completa que permet el widget:

default-src 'self';
script-src 'self' 'nonce-{NONCE}' https://www.feedjolt.com;
connect-src 'self' https://www.feedjolt.com https://la-teva-api.com;
frame-src https://www.feedjolt.com https://challenges.cloudflare.com;
img-src 'self' data: blob: https://cdn.feedjolt.com https://el-teu-cdn.com;
font-src 'self' data: https://www.feedjolt.com;
style-src 'self' 'unsafe-inline';
form-action 'self';
base-uri 'self';
object-src 'none';
frame-ancestors 'none';
upgrade-insecure-requests;

frame-ancestors 'none' està bé - controla qui et pot embedir, no què pots embedir tu.

CSP en mode report-only

Recomanem encaridament córrer CSP en report-only mentre integres, després promoure a enforce després d'una setmana neta de reports.

Content-Security-Policy-Report-Only: script-src ...; report-uri https://el-teu-csp-collector;

Si el nostre domini apareix en un report de violació, has trobat una directiva que et falta. Afegeix-la; torna a provar.

Subresource Integrity (SRI)

Actualment no proporcionem hashes SRI estables per a widget-loader.js perquè el loader s'actualitza contínuament. Si necessites SRI per compliment, recomanem allotjar una còpia fixada del loader al teu propi CDN i actualitzar-la en un calendari controlat.

Això és un compromís: un loader fixat té SRI estricte; t'assumeixes la responsabilitat de tirar d'actualitzacions. Compartirem builds firmats sota petició.

Trusted Types

Si fas servir la CSP Trusted Types, el loader del widget no assigna directament a innerHTML; el contingut de l'iframe es carrega via atribut src estàndard. No hauries de necessitar una política Trusted Types per al widget.

Errors comuns

  • script-src 'self' només. El loader és a feedjolt.com, no a 'self'. Afegeix l'origen explícit.
  • Oblidar frame-src. Sense això, l'iframe mai carrega. El botó funciona però fer-hi clic no fa res.
  • img-src 'self' només. Els logos i les imatges pujades vénen de cdn.feedjolt.com. Apareixeran com a icones trencades.
  • Activar CSP sense provar. Sempre va primer report-only.

CORS / cross-origin

El widget fa peticions cross-origin des de la teva pàgina a feedjolt.com. Manegem CORS al servidor; tu no has de configurar res. Si veus un error de CORS a la consola, sol ser CSP malament reportada - revisa la teva CSP primer.

On this page