Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
En-tête Cross-Origin-Embedder-Policy (COEP)
L'en-tête de réponse HTTPCross-Origin-Embedder-Policy (COEP) configure la politique du document courant pour le chargement et l'intégration de ressources d'origine croisée.
La politique définissant si une ressource particulière peut être intégrée en cross-site peut être définie pour cette ressource à l'aide de l'en-têteCross-Origin-Resource-Policy (CORP) lors d'une requêteno-cors, ou en utilisantCORS.Si aucune de ces politiques n'est définie, alors par défaut, les ressources peuvent être chargées ou intégrées dans un document comme si elles avaient une valeur CORP decross-origin.
L'en-têteCross-Origin-Embedder-Policy permet d'exiger que les en-têtes CORP ou CORS soient définis pour charger des ressources d'origine croisée dans le document courant.Vous pouvez aussi définir la politique pour conserver le comportement par défaut, ou autoriser le chargement des ressources mais en supprimant les éventuels identifiants qui auraient pu être envoyés.La politique s'applique aux ressources chargées, ainsi qu'aux ressources dans les<iframe> et les cadres imbriqués.
Note :L'en-têteCross-Origin-Embedder-Policy ne remplace ni n'affecte le comportement d'intégration d'une ressource pour laquelle CORP ou CORS a été défini.Si CORP restreint une ressource à une intégration uniquementsame-origin, elle ne sera pas chargée en cross-origin dans une ressource, quel que soit la valeur de COEP.
| Type d'en-tête | En-tête de réponse |
|---|
Dans cet article
Syntaxe
Cross-Origin-Embedder-Policy: unsafe-none | require-corp | credentiallessDirectives
unsafe-noneAutorise le document à charger des ressources d'origine croiséesans autorisation explicite via le protocole CORS ou l'en-tête
Cross-Origin-Resource-Policy.Il s'agit de la valeur par défaut.require-corpUn document ne peut charger que des ressources de même origine, ou des ressources explicitement marquées comme chargeables depuis une autre origine.
Le chargement de ressources d'origine croisée sera bloqué par COEP sauf si :
- La ressource est demandée en mode
no-corset la réponse inclut un en-têteCross-Origin-Resource-Policyqui autorise son chargement dans l'origine du document. - La ressource est demandée en mode
corset la ressource prend en charge et autorise CORS.Cela peut se faire, par exemple, en HTML avec l'attributcrossorigin, ou en JavaScript en effectuant une requête avec{mode="cors"}.
- La ressource est demandée en mode
credentiallessUn document peut charger des ressources d'origine croisée demandées enmode
no-corssans autorisation explicite via l'en-têteCross-Origin-Resource-Policy.Dans ce cas, les requêtes sont envoyées sans identifiants : les cookies sont omis dans la requête et ignorés dans la réponse.Le comportement de chargement cross-origin pour les autresmodes de requête est identique à celui de
require-corp.Par exemple, une ressource d'origine croisée demandée en modecorsdoit prendre en charge (et autoriser) CORS.
Exemples
>Fonctionnalités dépendant de l'isolation inter-origines
Certaines fonctionnalités, comme l'accès aux objetsSharedArrayBuffer ou l'utilisation dePerformance.now() avec des minuteurs non limités, ne sont disponibles que si votre document estisolé inter-origines.
Pour utiliser ces fonctionnalités dans un document, vous devez définir l'en-tête COEP avec la valeurrequire-corp oucredentialless, et l'en-têteCross-Origin-Opener-Policy àsame-origin.De plus, la fonctionnalité ne doit pas être bloquée parPermissions-Policy: cross-origin-isolated.
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corpVous pouvez utiliser les propriétésWindow.crossOriginIsolated etWorkerGlobalScope.crossOriginIsolated pour vérifier si les fonctionnalités sont restreintes respectivement dans les contextes window et worker :
const myWorker = new Worker("worker.js");if (crossOriginIsolated) { const buffer = new SharedArrayBuffer(16); myWorker.postMessage(buffer);} else { const buffer = new ArrayBuffer(16); myWorker.postMessage(buffer);}Éviter le blocage COEP avec CORS
Si vous activez COEP avecrequire-corp et souhaitez intégrer une ressource d'origine croisée qui prend en chargeCORS, vous devrez explicitement indiquer qu'elle est demandée en modecors.
Par exemple, pour récupérer une image déclarée en HTML depuis un site tiers qui prend en charge CORS, vous pouvez utiliser l'attributcrossorigin afin qu'elle soit demandée en modecors :
<img src="https://tiercepartie.com/img.png" crossorigin />Vous pouvez de la même façon utiliser l'attributHTMLScriptElement.crossOrigin ou effectuer une requête avec{ mode: 'cors' } pour demander un fichier en mode CORS en JavaScript.
Si CORS n'est pas pris en charge pour certaines images, une valeur COEP decredentialless peut être utilisée comme alternative pour charger l'image sans consentement explicite du serveur distant, au prix d'une requête sans cookies.
Spécifications
| Specification |
|---|
| HTML> # coep> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
Cross-Origin-Opener-Policy - Les propriétés API
Window.crossOriginIsolatedetWorkerGlobalScope.crossOriginIsolated - Cross Origin Opener Policy(angl.) dansWhy you need "cross-origin isolated" for powerful features sur web.dev (2020)
- COOP et COEP expliqué : Artur Janc, Charlie Reis, Anne van Kesteren(angl.) (2020)