Après avoir ajouté votre domaine à Alibaba Cloud CDNDCDN, vous pouvez configurer des en-têtes de réponse HTTP personnalisés pour activer le partage de ressources entre origines (CORS) et accéder aux ressources depuis différentes origines.
Qu'est-ce que le CORS ?
Le partage de ressources entre origines (CORS) est une norme inter-origines fournie par HTML5 qui permet aux pages web d'accéder et de charger des ressources depuis différents serveurs d'origine. Cela garantit la sécurité de la transmission des données. Pour plus d'informations, consultez Partage de ressources entre origines (CORS).
Avantages
Pour des raisons de sécurité, les navigateurs appliquent la politique de même origine. Cette dernière restreint la capacité des pages web à initier des requêtes pour accéder et charger des ressources provenant de domaines ou de sous-domaines différents, ou via des protocoles ou des ports distincts. Par exemple, example.com ne peut pas accéder aux ressources hébergées sur example.org. Lorsque vous configurez le CORS, vous pouvez spécifier des en-têtes de réponse sur le serveur CDN DCDN. Si une requête visant à accéder aux ressources CDN DCDN contient des en-têtes conformes aux règles autorisées, les ressources inter-origines peuvent être chargées et consultées.
Fonctionnement du CORS
CORS désactivé
Un client envoie une requête pour
http://example.com/index.htmlversexample.com.example.comrenvoie le fichierindex.htmlau client. L'URL du fichier contient l'URL d'une ressource située sur un autre serveur d'origine :http://example.org/image_01.png.Le client envoie une requête pour
http://example.org/image_01.pngversexample.org.example.orgrenvoie un en-tête inter-origines, tel queAccess-Control-Allow-Origin: *.Le client reçoit la réponse et le navigateur vérifie la valeur de l'en-tête. La valeur de l'en-tête est un astérisque (*), ce qui indique que les requêtes inter-origines provenant de toutes les origines sont autorisées. Le navigateur affiche ensuite la réponse.
CORS activé
Un client envoie une requête pour
http://example.com/index.htmlvers CDN DCDN.CDN DCDN renvoie le fichier
index.htmlau client. L'URL du fichier contient l'URL d'une ressource située sur un autre serveur d'origine :http://example.org/image_01.png.Le client envoie une requête pour
http://example.org/image_01.pngvers CDN DCDN. La requête inclut l'en-têteOrigin:http://example.com.CDN DCDN reçoit la requête, puis compare la valeur de l'en-tête
Origindans la requête avec la valeur configurée deAccess-Control-Allow-Origin. Vous pouvez spécifier une ou plusieurs valeurs, ou un nom de domaine générique pourAccess-Control-Allow-Origin.Access-Control-Allow-Originn'est renvoyé au client que si les valeurs d'en-tête précédentes correspondent.CDN DCDN renvoie un en-tête inter-origines, tel que
Access-Control-Allow-Origin:http://example.com, au client.Le client reçoit la réponse et le navigateur vérifie la valeur de l'en-tête. La valeur de l'en-tête est
http://example.com, ce qui indique que les requêtes inter-origines provenant dehttp://example.comsont autorisées. Le navigateur affiche ensuite la réponse.
Remarques d'utilisation
Si le serveur d'origine est un compartiment Object Storage Service (OSS) et que le CORS est configuré à la fois dans les consoles OSS et CDNDCDN, les paramètres CORS définis dans la console CDNDCDN s'appliquent. Pour plus d'informations sur les paramètres CORS dans la console OSS, consultez CORS.
Les en-têtes de réponse HTTP configurés dans la console DCDN, tels que l'en-tête CORS
Access-Control-Allow-Origin, s'appliquent à tous les types de ressources, y compris les requêtes API dynamiques.
Activer le CORS
Connectez-vous à la console DCDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, localisez le domaine cible et cliquez sur Configure.
Dans l'arborescence de navigation de gauche du domaine, cliquez sur Caching.
Cliquez sur l'onglet Modify Outgoing Response Header, puis cliquez sur Add pour configurer l'en-tête de réponse HTTP que les nœuds DCDN ajoutent aux réponses.
-
Définissez les paramètres suivants pour spécifier les origines autorisées pour les requêtes inter-origines, puis cliquez sur OK.

Paramètre
Description
Exemple
Operation
Vous devez définir ce paramètre sur Add pour utiliser la fonctionnalité CORS.
Add
Response Header
Vous devez définir ce paramètre sur
Access-Control-Allow-Originpour utiliser la fonctionnalité CORS.Access-Control-Allow-Origin
Header Value
CORS désactivé : vous ne pouvez configurer qu'un caractère générique ou une seule origine spécifiée.
Caractère générique (
*) : un caractère générique est configuré, indiquant que les ressources peuvent être accessibles depuis toutes les origines.Origine unique spécifiée : une seule origine (nom de domaine) est spécifiée, indiquant que les ressources ne peuvent être accessibles que depuis l'origine spécifiée.
CORS activé : vous pouvez configurer un caractère générique, une seule origine spécifiée, plusieurs origines spécifiées et des noms de domaine génériques.
Caractère générique (
*) : un caractère générique est configuré, indiquant que les ressources peuvent être accessibles depuis toutes les origines.Origine unique spécifiée : une seule origine (nom de domaine) est spécifiée, indiquant que les ressources ne peuvent être accessibles que depuis l'origine spécifiée.
Plusieurs origines spécifiées : plusieurs origines (noms de domaine) sont spécifiées et séparées par des virgules (
,), indiquant que les ressources peuvent être accessibles depuis les origines comprises dans la plage spécifiée.Noms de domaine génériques : un nom de domaine générique est configuré, indiquant que les ressources peuvent être accessibles depuis toutes les origines correspondant au nom de domaine générique spécifié.
*http://www.aliyun.comhttps://aliyun.com,http://www.aliyun.comhttp://*.aliyun.com
Allow Duplicates
Oui : les en-têtes en double sont autorisés. L'en-tête renvoyé par le serveur d'origine et l'en-tête ajouté à la réponse sont renvoyés au client.
Non : les en-têtes en double ne sont pas autorisés. L'en-tête renvoyé par le serveur d'origine est écrasé par l'en-tête ajouté à la réponse.
ImportantLes paramètres Allow Duplicates et CORS s'excluent mutuellement. Si vous définissez Allow Duplicates sur Yes, le paramètre CORS devient invalide.
No
CORS
Vous ne pouvez configurer le paramètre CORS que si vous définissez Operation sur Add et Response Header sur
Access-Control-Allow-Origin.Valeurs valides pour CORS : Disable et Enable. Valeur par défaut : Disable.
Disable : les points de présence (POP) DCDN ne vérifient pas l'en-tête
Origindans les requêtes des utilisateurs. Dans ce cas, les POP renvoient la valeur configurée deAccess-Control-Allow-Origin.Enable : les points de présence (POP) DCDN vérifient l'en-tête
Origindans les requêtes des utilisateurs et spécifient une valeur pour l'en-têteAccess-Control-Allow-Originselon les règles suivantes :Correspondance par motif générique : si vous définissez l'en-tête
Access-Control-Allow-Originsur un astérisque (),Access-Control-Allow-Origin:est renvoyé, indépendamment du fait que les requêtes des utilisateurs contiennent l'en-têteOriginou la valeur spécifiée pour l'en-têteOrigin.Correspondance exacte : vous pouvez spécifier une ou plusieurs valeurs pour l'en-tête
Access-Control-Allow-Origin. Séparez plusieurs valeurs par des virgules (,) :Si la valeur de l'en-tête
Origindans une requête utilisateur correspond à une valeur de l'en-têteAccess-Control-Allow-Origin, la valeur correspondante de l'en-têteAccess-Control-Allow-Originest renvoyée.Si la valeur de l'en-tête
Origindans une requête utilisateur ne correspond à aucune valeur de l'en-têteAccess-Control-Allow-Origin, l'en-têteAccess-Control-Allow-Originn'est pas renvoyé.
Correspondance par nom de domaine générique : si vous définissez l'en-tête
Access-Control-Allow-Originsur un nom de domaine générique, la valeur de l'en-têteOriginest comparée au nom de domaine générique.
Si vous définissez le paramètre CORS sur Enable et que la valeur que vous souhaitez spécifier pour le paramètre Header Value contient un trait d'union (
-), vous devez échapper le trait d'union (-) en%-. Exemples :Valeur d'en-tête de réponse originale :
http://doc.aliyun-example.com.Valeur d'en-tête de réponse échappée :
http://doc.aliyun%-example.com.
Enable
-
Configurez les paramètres suivants pour spécifier les méthodes autorisées pour les requêtes inter-origines, puis cliquez sur OK.

Paramètre
Description
Exemple
Operation
Vous devez définir ce paramètre sur Add.
Add
Response Header
Vous devez définir ce paramètre sur
Access-Control-Allow-Methods.Access-Control-Allow-Methods
Header Value
Valeurs valides :
GET,POSTetPUT. Si vous ajoutez simultanémentGET,POSTetPUT, séparez-les par des virgules (,).GETAllow Duplicates
Oui : les en-têtes en double sont autorisés. L'en-tête renvoyé par le serveur d'origine et l'en-tête ajouté à la réponse sont renvoyés au client.
Non : les en-têtes en double ne sont pas autorisés. L'en-tête renvoyé par le serveur d'origine est écrasé par l'en-tête ajouté à la réponse.
No
Exemples de configuration
Exemple 1
Si la valeur de l'en-tête de réponse pour le CORS est définie sur une ou plusieurs origines spécifiques séparées par des virgules (,) :
Si la valeur de l'en-tête
Origindans la requête de l'utilisateur correspond exactement à l'une des origines spécifiées, le point de présence (POP) CDNDCDN répond avec l'en-tête CORS correspondant.Si aucune correspondance exacte n'est trouvée, l'en-tête CORS n'est pas inclus dans la réponse.
Sur CDN/DCDN, définissez : Access-Control-Allow-Origin: http://example.com,https://aliyundoc.com.
L'en-tête
Originde la requête utilisateur esthttp://example.com, et le point de présence (POP) CDNDCDN répond parAccess-Control-Allow-Origin: http://example.com.L'en-tête
Origindans la requête utilisateur esthttps://aliyundoc.com, et le nœud CDNDCDN répond parAccess-Control-Allow-Origin: https://aliyundoc.com.Le nœud CDNDCDN ne répondra pas à une requête utilisateur dont l'en-tête Origin est
http://aliyundoc.com(en raison d'une incompatibilité de protocole : la requête utilisateur utilise HTTP, tandis que CDNDCDN est configuré pour HTTPS).Si l'en-tête
Origind'une requête esthttp://aliyun.com, le point de présence (POP) CDNDCDN ne répondra pas (incompatibilité de domaine).
Exemple 2
Si la valeur de l'en-tête de réponse pour le CORS est définie sur un nom de domaine générique, le POP vérifie si la valeur Origin dans l'en-tête de la requête correspond au motif générique.
Sur CDN/DCDN, définissez : Access-Control-Allow-Origin: http://*.aliyundoc.com.
La requête utilisateur contient l'en-tête Origin
http://demo.aliyundoc.com, et le point de présence (POP) CDNDCDN répond parAccess-Control-Allow-Origin: http://demo.aliyundoc.com.Si l'en-tête Origin d'une requête est
http://demo.example.com, le point de présence (POP) CDNDCDN ne répondra pas car le nom de domaine ne correspond pas.Le nœud CDNDCDN ne répond pas à une requête utilisateur dont l'en-tête Origin est
https://demo.aliyundoc.comcar la requête utilise le protocole HTTPS, mais CDNDCDN est configuré avec le protocole HTTP.