Book from over 50,000 restaurants
This page enforces script-src 'nonce-SANDBOX_TEST_NONCE_123' 'strict-dynamic' 'unsafe-eval' 'report-sample' https:.
Scripts without the correct nonce will be blocked unless injected by a nonced script
(via 'strict-dynamic'). 'unsafe-inline' is intentionally omitted.
This page closely replicates the Content Security Policy observed on OpenTable's production site
(www.opentable.com, confirmed August 2026). Some directives are intentionally
loosened (connect-src *, media-src *) to isolate script/frame/image
blocking behavior without unrelated noise. See the differences table below.
| Aspect | OpenTable Production | This Test Page |
|---|---|---|
| CSP delivery | HTTP response header | <meta> tag (no server) |
| Nonce | Server-generated, unique per request | Hardcoded (SANDBOX_TEST_NONCE_123) |
| GPT loading | Full SDK with consent UI | Stub (groups C0001, C0003, C0004 pre-consented) |
The core security measure. Scripts must either carry the page nonce or be injected by a
nonced script ('strict-dynamic'). 'unsafe-inline' is NOT
allowed — inline <script> blocks without a nonce are blocked.
'nonce-…' — only scripts with the correct nonce execute'strict-dynamic' — scripts created via createElement('script') by a trusted (nonced) script are allowed'unsafe-eval' — eval() and new Function() permitted (OpenTable allows this)'report-sample' — violation reports include a sample of the blocked contenthttps: — broad fallback for older browsers that don't support 'strict-dynamic'cdn.cookielaw.org, cdn.otstatic.com, googletagmanager.com, doubleclick.net, googlesyndication.com, gstatic.com/recaptcha, spreedly.com, sift.opentable.com, akamaihd.net, maps.googleapis.com, js.stripe.com, google.com, cdn.intergient.comImages are restricted to specific domains. Notably, ep1.adtrafficquality.google
(used by GPT for ad quality SODAR pixels) is not whitelisted — this causes
CSP violations even on OpenTable's own production site.
Ad iframes from doubleclick.net, googlesyndication.com, and
tpc.googlesyndication.com are allowed.
default-src 'self' — baseline: only same-originstyle-src 'self' 'unsafe-inline' — inline styles permittedconnect-src * — XHR/fetch unrestricted (permissive for testing)font-src 'self' data: https: — fonts from any HTTPS originobject-src 'none' — no plugins/embedsimg-src blocks ep1.adtrafficquality.google — Google's GPT SODAR pixel is blockeddisableInitialLoad, setCollapseEmptyDivdpx.airpr.com DNS failure — broken analytics tracker (not CSP-related)For RAMP.js to work on OpenTable, it must:
<script> tag by the server)document.createElement('script') with src attributes — these are allowed by 'strict-dynamic'<script> blocks via innerHTML or document.write — these will be blocked