En raison de la politique de même origine des navigateurs, les requêtes inter-origines peuvent être rejetées lors d'échanges de données ou de partage de ressources entre différents noms de domaine. Pour résoudre ce problème, configurez des règles de partage de ressources entre origines multiples (CORS). Ces règles permettent de spécifier les domaines autorisés à envoyer des requêtes, les méthodes HTTP acceptées pour les requêtes inter-origines ainsi que les en-têtes autorisés.
Définir des règles CORS
Le code suivant définit des règles CORS pour un bucket donné :
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example for the endpoint. Specify the endpoint based on your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Obtain access credentials from environment variables. Before running this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name, such as examplebucket.
bucket = client.get_bucket('examplebucket')
# Set the CORS rules.
bucket.cors = [
Aliyun::OSS::CORSRule.new(
# Specify the allowed origins for cross-origin requests, such as http://example.com.
:allowed_origins => ['http://example.com', 'http://example.net'],
# Specify the allowed HTTP methods for cross-origin requests, such as GET, PUT, DELETE, POST, and HEAD.
:allowed_methods => ['PUT', 'POST', 'GET'],
# Specify the allowed headers in OPTIONS preflight requests, such as x-oss-test.
:allowed_headers => ['x-oss-test'],
# Specify the response headers that users can access from applications.
:expose_headers => ['x-oss-test1'],
# Specify the cache duration for the results of an OPTIONS preflight request for a specific resource. Unit: seconds.
:max_age_seconds => 100)
]
Récupérer les règles CORS
Le code suivant récupère les règles CORS d'un bucket :
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example for the endpoint. Specify the endpoint based on your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Obtain access credentials from environment variables. Before running this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name, such as examplebucket.
bucket = client.get_bucket('examplebucket')
cors = bucket.cors
puts cors.map(&:to_s)
Supprimer les règles CORS
Le code suivant supprime toutes les règles CORS d'un bucket donné :
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example for the endpoint. Specify the endpoint based on your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Obtain access credentials from environment variables. Before running this code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name, such as examplebucket.
bucket = client.get_bucket('examplebucket')
bucket.cors = []
Références
Pour plus d'informations sur l'opération API utilisée pour définir des règles de partage de ressources entre origines multiples (CORS), consultez PutBucketCors.
Pour en savoir plus, consultez GetBucketCors.
Pour plus d'informations sur la suppression des règles de partage de ressources entre origines multiples (CORS), consultez DeleteBucketCors.