En raison de la politique de même origine des navigateurs, les requêtes cross-origin 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, vous pouvez configurer des règles de partage de ressources cross-origin (CORS). Dans ces règles CORS, spécifiez les noms de domaine autorisés à envoyer des requêtes, les méthodes HTTP utilisables pour les requêtes cross-origin et les en-têtes autorisés.
Définir des règles CORS
Le code suivant définit des règles CORS pour un bucket spécifié :
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)
]
Obtenir des 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 des règles CORS
Le code suivant supprime toutes les règles CORS d'un bucket spécifié :
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 cross-origin (CORS), consultez PutBucketCors.
Pour en savoir plus, consultez GetBucketCors.
Pour plus d'informations sur la suppression des règles de partage de ressources cross-origin (CORS), consultez DeleteBucketCors.