Prise en charge du partage des ressources Cross-Origin (CORS) pour le stockage AzureCross-Origin Resource Sharing (CORS) support for Azure Storage

Depuis la version du 15/08/2013, les services de stockage Azure prennent en charge le Partage de ressources cross-origine (CORS) pour les services BLOB, de Table et de File d'attente.Beginning with version 2013-08-15, the Azure storage services support Cross-Origin Resource Sharing (CORS) for the Blob, Table, and Queue services. Le service de fichiers prend en charge CORS à partir de la version 2015-02-21.The File service supports CORS beginning with version 2015-02-21.

CORS est une fonctionnalité HTTP qui permet à une application web exécutée dans un domaine d'accéder aux ressources d'un autre domaine.CORS is an HTTP feature that enables a web application running under one domain to access resources in another domain. Les navigateurs web implémentent une restriction de sécurité appelée stratégie de même origine qui empêche une page web d’appeler des API d’un autre domaine ; CORS constitue un moyen sûr pour autoriser un domaine (le domaine d’origine) à appeler des API d’un autre domaine.Web browsers implement a security restriction known as same-origin policy that prevents a web page from calling APIs in a different domain; CORS provides a secure way to allow one domain (the origin domain) to call APIs in another domain. Pour plus d’informations sur CORS, consultez la spécification cors .See the CORS specification for details on CORS.

Vous pouvez définir des règles CORS individuellement pour chacun des services de stockage Azure, en appelant Set Blob service Properties, Set file serviceProperties, Set queue service Propertieset SET table service Properties.You can set CORS rules individually for each of the Azure Storage services, by calling Set Blob Service Properties, Set File Service Properties, Set Queue Service Properties, and Set Table Service Properties. Une fois que vous avez défini les règles CORS du service, une requête autorisée exécutée auprès du service à partir d'un autre domaine est évaluée pour déterminer si elle est autorisée conformément aux règles que vous avez spécifiées.Once you set the CORS rules for the service, then a properly authorized request made against the service from a different domain will be evaluated to determine whether it is allowed according to the rules you have specified.

Important

CORS n’est pas un mécanisme d’autorisation.CORS is not an authorization mechanism. Toute demande effectuée sur une ressource de stockage lorsque CORS est activé doit avoir un en-tête d’autorisation valide ou être effectuée sur une ressource publique.Any request made against a storage resource when CORS is enabled must either have a valid authorization header, or must be made against a public resource.

CORS est pris en charge pour tous les types de compte de stockage, sauf pour les comptes de stockage v1 ou v2 à usage général dans le niveau de performance Premium.CORS is supported for all storage account types except for general-purpose v1 or v2 storage accounts in the premium performance tier.

Présentation des demandes CORSUnderstanding CORS requests

Une demande CORS d'un domaine d'origine peut comprendre deux demandes distinctes :A CORS request from an origin domain may consist of two separate requests:

  • Une demande préliminaire, qui interroge les restrictions CORS imposées par le service.A preflight request, which queries the CORS restrictions imposed by the service. La demande préliminaire est obligatoire, sauf si la méthode de demande est une méthode simple, à savoir GET, HEAD ou POST.The preflight request is required unless the request method is a simple method, meaning GET, HEAD, or POST.

  • La demande réelle, adressée à la ressource souhaitée.The actual request, made against the desired resource.

Demande préliminairePreflight request

La demande préliminaire interroge les restrictions CORS qui ont été établies pour le service de stockage par le propriétaire du compte.The preflight request queries the CORS restrictions that have been established for the storage service by the account owner. Le navigateur web (ou tout autre agent utilisateur) envoie une demande OPTIONS qui comprend les en-têtes de demande, la méthode et le domaine d'origine.The web browser (or other user agent) sends an OPTIONS request that includes the request headers, method and origin domain. Le service de stockage évalue l'opération prévue selon un ensemble préconfiguré de règles CORS qui indiquent les domaines d'origine, les méthodes de demande et les en-têtes de demande qui peuvent être spécifiés dans une demande réelle à une ressource de stockage.The storage service evaluates the intended operation based on a pre-configured set of CORS rules that specify which origin domains, request methods, and request headers may be specified on an actual request against a storage resource.

Si CORS est activé pour le service et que l'une des règles CORS correspond à la demande préliminaire, le service répond avec le code d'état 200 (OK) et inclut les en-têtes Access-Control dans la réponse.If CORS is enabled for the service and there is a CORS rule that matches the preflight request, the service responds with status code 200 (OK), and includes the required Access-Control headers in the response.

Si CORS n'est pas activé pour le service ou si aucune règle CORS ne correspond à la demande préliminaire, le service répond avec le code d'état 403 (Interdit).If CORS is not enabled for the service or no CORS rule matches the preflight request, the service will respond with status code 403 (Forbidden).

Si la demande OPTIONS ne contient pas les en-têtes CORS nécessaires (en-têtes Origin et Access-Control-Request-Method), le service répond avec le code d'état 400 (Demande incorrecte).If the OPTIONS request doesn’t contain the required CORS headers (the Origin and Access-Control-Request-Method headers), the service will respond with status code 400 (Bad request).

Notez qu’une demande préliminaire est évaluée par rapport au service (BLOB, fichier, file d’attente ou table) et non à la ressource demandée.Note that a preflight request is evaluated against the service (Blob, File, Queue, or Table) and not against the requested resource. Le propriétaire du compte doit avoir activé CORS dans le cadre des propriétés du service de compte pour que la demande réussisse.The account owner must have enabled CORS as part of the account service properties in order for the request to succeed.

Demande réelleActual request

Une fois la demande préliminaire acceptée et la réponse retournée, le navigateur envoie la demande réelle sur la ressource de stockage.Once the preflight request is accepted and the response is returned, the browser will dispatch the actual request against the storage resource. Le navigateur refuse immédiatement la demande réelle si la demande préliminaire est rejetée.The browser will deny the actual request immediately if the preflight request is rejected.

La demande réelle est traitée comme une demande normale au service de stockage.The actual request is treated as normal request against the storage service. La présence de l'en-tête Origin indique que la demande est une demande CORS et que le service vérifiera les règles CORS correspondantes.The presence of the Origin header indicates that the request is a CORS request and the service will check the matching CORS rules. Si une correspondance est trouvée, les en-têtes Access-Control sont ajoutés à la réponse et renvoyés au client.If a match is found, the Access-Control headers are added to the response and sent back to the client. Si aucune correspondance n'est trouvée, les en-têtes Access-Control CORS ne sont pas renvoyés.If a match is not found, the CORS Access-Control headers are not returned.

Activation de CORS pour le stockage AzureEnabling CORS for Azure Storage

Les règles CORS sont définies au niveau du service. vous devez donc activer ou désactiver CORS pour chaque service (objet BLOB, fichier, file d’attente et table) séparément.CORS rules are set at the service level, so you need to enable or disable CORS for each service (Blob, File, Queue and Table) separately. Par défaut, CORS est désactivé pour tous les services.By default, CORS is disabled for each service. Pour activer CORS, vous devez définir les propriétés de service appropriées à l’aide de la version 2013-08-15 ou ultérieure pour les services BLOB, de file d’attente et de table, ou avec la version 2015-02-21 ou pour le service de fichiers.To enable CORS, you need to set the appropriate service properties using version 2013-08-15 or later for the Blob, Queue, and Table services, or version 2015-02-21 or for the File service. Pour activer CORS, ajoutez des règles CORS aux propriétés de service.You enable CORS by adding CORS rules to the service properties. Pour plus d’informations sur l’activation ou la désactivation de CORS pour un service et sur la définition des règles CORS, consultez définir les propriétés du service BLOB, définir les propriétés du service de fichiers, définir les propriétés du service de tableet définir les propriétés du service de file d’attente.For details about how to enable or disable CORS for a service and how to set CORS rules, please refer to Set Blob Service Properties, Set File Service Properties, Set Table Service Properties, and Set Queue Service Properties.

Voici un exemple d’une règle CORS unique, spécifiée par le biais d’une Set Service Properties opération :Here is a sample of a single CORS rule, specified via a Set Service Properties operation:

<Cors>
    <CorsRule>  
        <AllowedOrigins>http://www.contoso.com, http://www.fabrikam.com</AllowedOrigins>  
        <AllowedMethods>PUT,GET</AllowedMethods>  
        <AllowedHeaders>x-ms-meta-data*,x-ms-meta-target*,x-ms-meta-abc</AllowedHeaders>  
        <ExposedHeaders>x-ms-meta-*</ExposedHeaders>  
        <MaxAgeInSeconds>200</MaxAgeInSeconds>  
    </CorsRule>  
<Cors>  
  

Chaque élément inclus dans la règle CORS est décrit ci-dessous :Each element included in the CORS rule is described below:

  • AllowedOrigins : Domaines d’origine qui sont autorisés à effectuer une requête auprès du service de stockage via CORS.AllowedOrigins: The origin domains that are permitted to make a request against the storage service via CORS. Le domaine d'origine est celui d'où provient la demande.The origin domain is the domain from which the request originates. Notez que l'origine doit correspondance exactement (avec respect de la casse) à l'origine que l'utilisateur envoie au service.Note that the origin must be an exact case-sensitive match with the origin that the user age sends to the service. Vous pouvez également utiliser le caractère générique « * » pour autoriser tous les domaines d'origine à effectuer des demandes via CORS.You can also use the wildcard character '*' to allow all origin domains to make requests via CORS. Dans l’exemple ci-dessus, les domaines http://www.contoso.com et http://www.fabrikam.com peuvent envoyer des requêtes au service à l’aide de CORS.In the example above, the domains http://www.contoso.com and http://www.fabrikam.com can make requests against the service using CORS.

  • AllowedMethods : Méthodes (verbes de requête HTTP) que le domaine d’origine peut utiliser pour une requête CORS.AllowedMethods: The methods (HTTP request verbs) that the origin domain may use for a CORS request. Dans l'exemple ci-dessus, seules les demandes PUT et GET sont autorisées.In the example above, only PUT and GET requests are permitted.

  • AllowedHeaders : En-têtes de requête que le domaine d’origine peut spécifier dans la requête CORS.AllowedHeaders: The request headers that the origin domain may specify on the CORS request. Dans l'exemple ci-dessus, tous les en-têtes de métadonnées commençant par x-ms-meta-data, x-ms-meta-target et x-ms-meta-abc sont autorisés.In the example above, all metadata headers starting with x-ms-meta-data, x-ms-meta-target, and x-ms-meta-abc are permitted. Notez que le caractère générique « * » indique que les en-têtes commençant par le préfixe spécifié sont autorisés.Note that the wildcard character '*' indicates that any header beginning with the specified prefix is allowed.

  • ExposedHeaders : En-têtes de réponse qui peuvent être envoyés dans la réponse à la requête CORS et exposés par le navigateur à l’émetteur de la requête.ExposedHeaders: The response headers that may be sent in the response to the CORS request and exposed by the browser to the request issuer. Dans l'exemple ci-dessus, il est indiqué au navigateur d'exposer les en-têtes commençant par x-ms-meta.In the example above, the browser is instructed to expose any header beginning with x-ms-meta.

  • MaxAgeInSeconds : Durée maximale pendant laquelle un navigateur doit mettre en cache la requête OPTIONS préliminaire.MaxAgeInSeconds: The maximum amount time that a browser should cache the preflight OPTIONS request.

Les services de stockage Azure prennent en charge la spécification d’en-têtes préfixés pour les éléments AllowedHeaders et ExposedHeaders.The Azure storage services support specifying prefixed headers for both the AllowedHeaders and ExposedHeaders elements. Pour autoriser une catégorie d'en-têtes, vous pouvez spécifier un préfixe commun à cette catégorie.To allow a category of headers, you can specify a common prefix to that category. Par exemple, le fait de spécifier x-ms-meta* comme en-tête préfixé établit une règle qui correspond à tous les en-têtes commençant par x-ms-meta.For example, specifying x-ms-meta* as a prefixed header establishes a rule that will match all headers that begin with x-ms-meta.

Les limitations suivantes s'appliquent aux règles CORS :The following limitations apply to CORS rules:

  • Vous pouvez spécifier jusqu’à cinq règles CORS par service de stockage (BLOB, fichier, table et file d’attente).You can specify up to five CORS rules per storage service (Blob, File, Table, and Queue).

  • La taille maximale de tous les paramètres de règles CORS sur la demande, à l’exception des balises XML, ne doit pas dépasser 2 Kio.The maximum size of all CORS rules settings on the request, excluding XML tags, should not exceed 2 KiB.

  • La longueur d'un en-tête autorisé, d'un en-tête exposé ou d'une origine autorisée ne doit pas dépasser 256 caractères.The length of an allowed header, exposed header, or allowed origin should not exceed 256 characters.

  • Les en-têtes autorisés et les en-têtes exposés peuvent être :Allowed headers and exposed headers may be either:

    • des en-têtes littéraux, où le nom exact de l’en-tête est spécifié, tel que x-ms-meta-processed.Literal headers, where the exact header name is provided, such as x-ms-meta-processed. Il ne peut pas y avoir plus de 64 en-têtes littéraux spécifiés sur la demande ;A maximum of 64 literal headers may be specified on the request.
    • En-têtes préfixés, où un préfixe de l’en-tête est fourni, tel que x- * MS-Meta-Data.Prefixed headers, where a prefix of the header is provided, such as x-ms-meta-data*. Le fait de spécifier un préfixe de cette façon autorise ou expose tout en-tête qui commence par le préfixe donné.Specifying a prefix in this manner allows or exposes any header that begins with the given prefix. Il ne peut pas y avoir plus de deux en-têtes préfixés spécifiés sur la demande.A maximum of two prefixed headers may be specified on the request.
  • Les méthodes (ou verbes HTTP) spécifiées dans l’élément AllowedMethods doivent respecter les méthodes prises en charge par les API de service de stockage Azure.The methods (or HTTP verbs) specified in the AllowedMethods element must conform to the methods supported by Azure storage service APIs. Les méthodes prises en charge sont DELETE, GET, HEAD, MERGE, POST, OPTIONS et PUT.Supported methods are DELETE, GET, HEAD, MERGE, POST, OPTIONS and PUT.

Présentation de la logique d'évaluation des règles CORSUnderstanding CORS rule evaluation logic

Quand un service de stockage reçoit une demande préliminaire ou réelle, il évalue cette demande en fonction des règles CORS que vous avez créées pour le service via l'opération Set Service Properties appropriée.When a storage service receives a preflight or actual request, it evaluates that request based on the CORS rules you have established for the service via the appropriate Set Service Properties operation. Les règles CORS sont évaluées dans l'ordre dans lequel elles ont été définies dans le corps de la demande de l'opération Set Service Properties.CORS rules are evaluated in the order in which they were set in the request body of the Set Service Properties operation.

Les règles CORS sont évaluées comme suit :CORS rules are evaluated as follows:

  1. Tout d'abord, le domaine d'origine de la demande est vérifié par rapport aux domaines répertoriés pour l'élément AllowedOrigins.First, the origin domain of the request is checked against the domains listed for the AllowedOrigins element. Si le domaine d'origine figure dans la liste ou si tous les domaines sont autorisés avec le caractère générique « * », l'évaluation des règles continue.If the origin domain is included in the list, or all domains are allowed with the wildcard character '*', then rules evaluation proceeds. Si le domaine d'origine ne figure pas dans la liste, la demande échoue.If the origin domain is not included, then the request fails.

  2. Ensuite, la méthode (ou le verbe HTTP) de la demande est comparée aux méthodes répertoriées dans l'élément AllowedMethods.Next, the method (or HTTP verb) of the request is checked against the methods listed in the AllowedMethods element. Si la méthode figure dans la liste, l'évaluation des règles continue ; sinon, la demande échoue.If the method is included in the list, then rules evaluation proceeds; if not, then the request fails.

  3. Si la demande correspond à une règle dans son domaine d'origine et sa méthode, cette règle est sélectionnée pour traiter la demande et aucune autre règle n'est évaluée.If the request matches a rule in its origin domain and its method, that rule is selected to process the request and no further rules are evaluated. Pour que la demande réussisse, tous les en-têtes spécifiés dans la demande sont vérifiés par rapport aux en-têtes répertoriés dans l'élément AllowedHeaders.Before the request can succeed, however, any headers specified on the request are checked against the headers listed in the AllowedHeaders element. Si les en-têtes envoyés ne correspondent pas aux en-têtes autorisés, la demande échoue.If the headers sent do not match the allowed headers, the request fails.

Étant donné que les règles sont traitées dans l'ordre dans lequel elles sont indiquées dans le corps de la demande, il est recommandé de spécifier les règles les plus restrictives en ce qui concerne les origines en premier dans la liste, afin qu'elles soient évaluées en priorité.Since the rules are processed in the order they are present in the request body, best practices recommend that you specify the most restrictive rules with respect to origins first in the list, so that these are evaluated first. Spécifiez les règles les moins restrictives (par exemple, une règle pour autoriser toutes les origines) à la fin de la liste.Specify rules that are less restrictive – for example, a rule to allow all origins – at the end of the list.

Exemple : évaluation de règles CORSExample – CORS rules evaluation

L'exemple suivant illustre un corps de demande partiel pour une opération visant à définir des règles CORS pour les services de stockage.The following example shows a partial request body for an operation to set CORS rules for the storage services. Consultez définitiondes propriétés du service BLOB, définition des propriétésdu service de fichiers, définition des propriétés du service de file d’attenteet définition des propriétés du service de table pour plus d’informations sur la construction de la requête.See Set Blob Service Properties, Set File Service Properties, Set Queue Service Properties, and Set Table Service Properties for details on constructing the request.

<Cors>  
    <CorsRule>  
        <AllowedOrigins>http://www.contoso.com</AllowedOrigins>  
        <AllowedMethods>PUT,HEAD</AllowedMethods>  
        <MaxAgeInSeconds>5</MaxAgeInSeconds>  
        <ExposedHeaders>x-ms-*</ExposedHeaders>  
        <AllowedHeaders>x-ms-blob-content-type, x-ms-blob-content-disposition</AllowedHeaders>  
    </CorsRule>  
    <CorsRule>  
        <AllowedOrigins>*</AllowedOrigins>  
        <AllowedMethods>PUT,GET</AllowedMethods>  
        <MaxAgeInSeconds>5</MaxAgeInSeconds>  
        <ExposedHeaders>x-ms-*</ExposedHeaders>  
        <AllowedHeaders>x-ms-blob-content-type, x-ms-blob-content-disposition</AllowedHeaders>  
    </CorsRule>  
    <CorsRule>  
        <AllowedOrigins>http://www.contoso.com</AllowedOrigins>  
        <AllowedMethods>GET</AllowedMethods>  
        <MaxAgeInSeconds>5</MaxAgeInSeconds>  
        <ExposedHeaders>x-ms-*</ExposedHeaders>  
        <AllowedHeaders>x-ms-client-request-id</AllowedHeaders>  
    </CorsRule>  
</Cors>

Ensuite, tenez compte des demandes CORS suivantes :Next, consider the following CORS requests:

MéthodeMethod OrigineOrigin En-têtes de requêteRequest headers Correspondance de règleRule Match RésultatsResult
PUTPUT http://www.contoso.com x-ms-blob-content-type Première règleFirst rule SuccèsSuccess
GETGET http://www.contoso.com x-ms-blob-content-type Deuxième règleSecond rule SuccèsSuccess
GETGET http://www.contoso.com x-ms-client-request-id Deuxième règleSecond rule ÉchecFailure

La première demande correspond à la première règle (le domaine d'origine correspond aux origines autorisées, la méthode correspond aux méthodes autorisées et l'en-tête correspond aux en-têtes autorisés). Par conséquent, elle réussit.The first request matches the first rule – the origin domain matches the allowed origins, the method matches the allowed methods, and the header matches the allowed headers – and so succeeds.

La deuxième demande ne correspond pas à la première règle, car la méthode ne correspond pas aux méthodes autorisées.The second request does not match the first rule because the method does not match the allowed methods. Toutefois, elle correspond à la deuxième règle, donc elle réussit.It does, however, match the second rule, so it succeeds.

La troisième demande correspond à la deuxième règle en ce qui concerne le domaine d'origine et la méthode, donc aucune autre règle n'est évaluée.The third request matches the second rule in its origin domain and method, so no further rules are evaluated. Toutefois, l'en-tête x-ms-client-request-id n'est pas autorisé par la deuxième règle, donc la demande échoue, en dépit du fait que la sémantique de la troisième règle lui aurait permis de réussir.However, the x-ms-client-request-id header is not allowed by the second rule, so the request fails, despite the fact that the semantics of the third rule would have allowed it to succeed.

Notes

Bien que cet exemple illustre une règle moins restrictive avant une règle plus restrictive, il est généralement recommandé de répertorier les règles les plus restrictives en premier.Although this example shows a less restrictive rule before a more restrictive one, in general the best practice is to list the most restrictive rules first.

Présentation de la définition de l'en-tête VaryUnderstanding how the Vary header is set

L'en-tête Vary est un en-tête HTTP/1.1 standard composé d'un ensemble de champs d'en-tête de demande qui indiquent au navigateur ou à l'agent utilisateur les critères qui ont été sélectionnés par le serveur pour traiter la demande.The Vary header is a standard HTTP/1.1 header consisting of a set of request header fields that advise the browser or user agent about the criteria that were selected by the server to process the request. L'en-tête Vary est principalement utilisé pour la mise en cache par les proxys, les navigateurs et les réseaux de distribution de contenu, qui s'en servent pour déterminer comment la réponse doit être mise en cache.The Vary header is mainly used for caching by proxies, browsers, and CDNs, which use it to determine how the response should be cached. Pour plus d’informations, consultez la spécification de l’ en-tête Vary.For details, see the specification for the Vary header.

Lorsque le navigateur ou un autre agent utilisateur met en cache la réponse d'une demande CORS, le domaine d'origine est mis en cache comme origine autorisée.When the browser or another user agent caches the response from a CORS request, the origin domain is cached as the allowed origin. Quand un deuxième domaine émet la même demande pour une ressource de stockage pendant que le cache est actif, l'agent utilisateur récupère le domaine d'origine mis en cache.When a second domain issues the same request for a storage resource while the cache is active, the user agent retrieves the cached origin domain. Comme le deuxième domaine ne correspond pas au domaine mis en cache, la demande échoue (alors qu'elle devrait réussir en d'autres circonstances).The second domain does not match the cached domain, so the request fails when it would otherwise succeed. Dans certains cas, le stockage Azure affecte à l' Vary en-tête la valeur Origin pour indiquer à l’agent utilisateur d’envoyer la demande cors suivante au service lorsque le domaine demandeur diffère de l’origine mise en cache.In certain cases, Azure Storage sets the Vary header to Origin to instruct the user agent to send the subsequent CORS request to the service when the requesting domain differs from the cached origin.

Le stockage Azure affecte Vary à l’en-tête la valeur Origin pour les demandes d’extraction/en-tête réelles dans les cas suivants :Azure Storage sets the Vary header to Origin for actual GET/HEAD requests in the following cases:

  • Lorsque l'origine de la demande correspond exactement à l'origine autorisée définie par une règle CORS.When the request origin exactly matches the allowed origin defined by a CORS rule. Pour être une correspondance exacte, la règle CORS ne doit pas inclure de caractère générique « * ».To be an exact match, the CORS rule may not include a wildcard '*' character.

  • Il n'y a aucune règle correspondant à l'origine de la demande, mais CORS est activé pour le service de stockage.There is no rule matching the request origin, but CORS is enabled for the storage service.

Si une demande GET/HEAD correspond à une règle CORS qui autorise toutes les origines, la réponse indique que toutes les origines sont autorisées et le cache de l'agent utilisateur autorise les demandes suivantes à partir de n'importe quel domaine d'origine pendant que le cache est actif.In the case where a GET/HEAD request matches a CORS rule that allows all origins, the response indicates that all origins are allowed, and the user agent cache will allow subsequent requests from any origin domain while the cache is active.

Notez qu'en ce qui concerne les demandes à l'aide de méthodes autres que GET/HEAD, les services de stockage ne définissent pas l'en-tête Vary, car les réponses à ces méthodes ne sont pas mises en cache par les agents utilisateurs.Note that for requests using methods other than GET/HEAD, the storage services will not set the Vary header, since responses to these methods are not cached by user agents.

Le tableau suivant indique comment le stockage Azure répond aux demandes GET/HEAD en fonction des cas mentionnés précédemment :The following table indicates how Azure storage will respond to GET/HEAD requests based on the previously mentioned cases:

En-tête d’origine présent dans la demandeOrigin header present on request Règle(s) CORS spécifiée(s) pour ce serviceCORS rule(s) specified for this service Règle de correspondance existante qui autorise toutes les origines ( * )Matching rule exists that allows all origins (*) Règle de correspondance existante pour la correspondance exacte d’origineMatching rule exists for exact origin match La réponse inclut l’en-tête Vary avec la valeur OriginResponse includes Vary header set to Origin La réponse comprend Access-Control-allowed-Origin : " * "Response includes Access-Control-Allowed-Origin: "*" La réponse inclut l’en-têteAccess-Control-Exposed-HeadersResponse includes Access-Control-Exposed-Headers
NonNo Non No Non No Non No Non No Non No Non No
NonNo OuiYes NonNo NonNo OuiYes NonNo Non No
NonNo OuiYes YesYes NonNo NonNo OuiYes YesYes
YesYes NonNo Non No Non No Non No Non No NonNo
OuiYes YesYes NonNo OuiYes YesYes NonNo OuiYes
YesYes YesYes NonNo NonNo OuiYes NonNo NonNo
OuiYes YesYes YesYes NonNo NonNo OuiYes OuiYes

Facturation des demandes CORSBilling for CORS requests

Les demandes préliminaires réussies sont facturées si vous avez activé CORS pour l’un des services de stockage de votre compte (en appelant Set Blob service Properties, Set queue serviceProperties, Set file service Propertiesou SET table service Properties).Successful preflight requests are billed if you have enabled CORS for any of the storage services for your account (by calling Set Blob Service Properties, Set Queue Service Properties, Set File Service Properties, or Set Table Service Properties). Pour réduire les frais, envisagez d'affecter une valeur plus élevée à l'élément MaxAgeInSeconds dans vos règles CORS, de façon à ce que l'agent utilisateur mette en cache la demande.To minimize charges, consider setting the MaxAgeInSeconds element in your CORS rules to a large value so that the user agent caches the request.

Les demandes préliminaires infructueuses ne seront pas facturés.Unsuccessful preflight requests will not be billed.

Voir aussiSee also

Spécification du Partage des ressources cross-origin (W3C)W3C Cross-Origin Resource Sharing Specification