Safeguard
Security Guides•

COEP require-corp or credentialless: which one should you use?

Compare COEP require-corp and credentialless: what each blocks, how cookies are handled, and how to pick the one that fits your third-party embeds.

Safeguard Security Team
3 min read

Use require-corp when you control or can influence every cross-origin resource your page loads, since each one must opt in. Use credentialless when you cannot get third parties to add headers: the browser loads their no-cors resources without cookies instead of blocking them. Both can support cross-origin isolation.

What each value does

Both values apply to cross-origin resources requested in no-cors mode, which is the default for plain image, script and stylesheet tags. Requests made in cors mode follow CORS rules under both values.

Behaviourrequire-corpcredentialless
Cross-origin no-cors resource with no CORP headerBlockedLoaded, without credentials
Cookies on those requestsSent as normal if allowedOmitted in the request, ignored in the response
Resource with a permissive CORP headerLoadedLoaded
cors mode resourcesNeed CORS permissionNeed CORS permission

The MDN wording for credentialless is direct: requests are sent without credentials, so cookies are omitted in the request and ignored in the response.

Why credentialless exists

Under require-corp, the owner of every embedded image, font or widget must send a Cross-Origin-Resource-Policy header that allows your page. For third-party tags and ad networks, that is often out of your hands. credentialless removes that dependency. The reasoning is that a no-credentials request cannot return personalised, private data, so the resource is safe to pull into an isolated process.

The cost is functional. Anything that needs the visitor's cookies to render properly will arrive as the logged-out version. A map tile or avatar that depends on a session may appear blank or generic.

How to choose

  1. Inventory the cross-origin resources the page loads, split by tag type.
  2. Mark the ones you own. Add CORP headers there first.
  3. For third parties, ask whether a logged-out response is acceptable. If yes, credentialless removes the blocker.
  4. If a resource must carry cookies and the vendor will not add CORP, either use cors mode where the vendor supports it, or drop the embed from the isolated page.
  5. Add report-to to see what is blocked before you enforce.
Reporting-Endpoints: coep-endpoint="https://reports.example.com/coep"
Cross-Origin-Embedder-Policy: credentialless; report-to="coep-endpoint"

Note that the MDN page states the header should carry only one token. Setting it more than once, or with several tokens, is treated as unsafe-none, so check that a proxy or framework is not adding a second copy.

Remember the other half

Neither value gives isolation alone. MDN lists COOP same-origin as the paired header, and a Permissions-Policy that does not block the feature. If crossOriginIsolated still reads false after you set COEP, look at COOP first.

Quick check

Does credentialless mean my own cookies are dropped?

No. It applies to cross-origin no-cors resource requests your page makes. Your own same-origin requests are unaffected.

Can I just use require-corp and fix things later?

You can, but blocked resources will simply fail to load for users. Run with a report-to endpoint on staging so the failures show up as reports instead of support tickets.

Safeguard produces an SBOM and dependency scan for your front end, a useful starting list when you inventory the scripts and packages that will meet your new embedding policy. Try the free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.