首页 > 解决方案 > 用于使用代理服务器上传到 S3 的 aws 请求标头中的 Java Proxy-Authorization

问题描述

我正在尝试将文件上传到 aws s3,中间有一个代理服务器,代理服务器使用令牌。我被要求将标头上的凭据作为“代理授权”发送。这是我正在使用的代码。

com.amazonaws.ClientConfiguration config = new ClientConfiguration();
config.addHeader(“Proxy-Authorization”, “Basic $$$$$$$$$“); 
config.setProtocol(Protocol.HTTPS); 
config.setProxyHost(proxyHost);
config.setProxyPort(proxyPort);

BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secret);

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withClientConfiguration(config)
    .withCredentials(new 
 AWSStaticCredentialsProvider(awsCreds)).withRegion(Regions.US_EAST_1).build();
 
s3Client.putObject(name,key,file)

当我们尝试上传到 s3(使用 s3Client putObject )时,我收到 HTTP 403.Forbidden 错误

com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: null; S3 Extended Request ID: null;

我使用带有 -H "Proxy-Authorization:Basic $$$$" 的 curl 命令尝试了相同的操作,并且效果很好。感谢有关如何从 java 代码传递请求中的标头的任何帮助。

标签: amazon-s3

解决方案


推荐阅读