要修复此问题,请确保以下三个方面:
确认AWS S3 Bucket CORS配置是否正确。如果您之前对桶的CORS进行了更改,则确保正确设置CORS规则。
确认AWS S3 Bucket的访问权限,确保您有读取和写入存储桶的权限。
检查您的应用程序的代码以确保未在请求中覆盖CORS规则。这是因为S3请求中的特定参数可能会覆盖配置的CORS规则。以下是一些示例代码,可用于修复此问题:
示例Java代码:
AmazonS3 s3 = new AmazonS3Client(credentials); s3.setEndpoint(S3_ENDPOINT); BucketCrossOriginConfiguration corsConfig = new BucketCrossOriginConfiguration(); corsConfig.addRule(new CORSRule() .withAllowedOrigins(Collections.singletonList("")) .withAllowedMethods(AllowedMethods.GET, AllowedMethods.PUT) .withMaxAgeSeconds(3000) .withAllowedHeaders(Collections.singletonList(""))); SetBucketCrossOriginConfigurationRequest setCorsReq = new SetBucketCrossOriginConfigurationRequest(bucketName, corsConfig); s3.setBucketCrossOriginConfiguration(setCorsReq);
示例Python代码:
import boto3 s3 = boto3.client('s3', region_name=AWS_REGION, aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY) cors_configuration = { 'CORSRules': [ { 'AllowedHeaders': [ '', ], 'AllowedMethods': [ 'GET', 'PUT', ], 'AllowedOrigins': [ '', ], 'MaxAgeSeconds': 3000, }, ] } s3.put_bucket_cors(Bucket=bucket_name, CORSConfiguration=cors_configuration)