Android SDK を使用して、ご利用の Object Storage Service (OSS) バケットに Referer ベースのアクセスルールを設定できます。 これらのルールには、Referer ホワイトリスト、Referer ブラックリスト、および空の Referer を持つリクエストを許可するオプションが含まれます。 この機能により、ご利用の OSS ファイルのホットリンクが防止され、不要なトラフィック料金を回避できます。
注意事項
ホットリンク保護を設定する前に、この機能について理解しておく必要があります。 詳細については、「ホットリンク保護」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。 サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化 (Android SDK)」をご参照ください。
ホットリンク保護を設定またはクリアするには、
oss:PutBucketReferer権限が必要です。 ホットリンク保護設定を取得するには、oss:GetBucketReferer権限が必要です。 詳細については、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。
ホットリンク保護の設定
次のコードは、ホットリンク保護を設定する方法を示しています。
PutBucketRefererRequest request = new PutBucketRefererRequest();
request.setBucketName("examplebucket");
// Referer ホワイトリストを追加します。 Referer パラメーターは、アスタリスク (*) と疑問符 (?) のワイルドカードをサポートします。
ArrayList<String> referers = new ArrayList<String>();
referers.add("http://www.aliyun.com");
referers.add("https://www.aliyun.com");
// referers.add("http://www.www.alibabacloud.com/help");
// referers.add("http://www.?.aliyuncs.com");
request.setReferers(referers);
OSSAsyncTask task = oss.asyncPutBucketReferer(request, new OSSCompletedCallback<PutBucketRefererRequest, PutBucketRefererResult>() {
@Override
public void onSuccess(PutBucketRefererRequest request, PutBucketRefererResult result) {
OSSLog.logInfo("code: " + result.getStatusCode());
}
@Override
public void onFailure(PutBucketRefererRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();ホットリンク保護設定の取得
次のコードは、ホットリンク保護設定を取得する方法を示しています。
GetBucketRefererRequest request = new GetBucketRefererRequest();
request.setBucketName("yourBucketName");
OSSAsyncTask task = oss.asyncGetBucketReferer(request, new OSSCompletedCallback<GetBucketRefererRequest, GetBucketRefererResult>() {
@Override
public void onSuccess(GetBucketRefererRequest request, GetBucketRefererResult result) {
// バケットの Referer ホワイトリストを取得します。
ArrayList<String> list = result.getReferers();
for (String ref : list){
OSSLog.logInfo("info: " + ref);
}
}
@Override
public void onFailure(GetBucketRefererRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();ホットリンク保護設定のクリア
次のコードは、ホットリンク保護設定をクリアする方法を示しています。
PutBucketRefererRequest request = new PutBucketRefererRequest();
request.setBucketName("yourBucketName");
request.setAllowEmpty(true);
// ホットリンク保護設定を直接クリアすることはできません。 空の Referer を許可する新しいルールを作成して、前のルールを上書きする必要があります。
ArrayList<String> referers = new ArrayList<String>();
request.setReferers(referers);
OSSAsyncTask task = oss.asyncPutBucketReferer(request, new OSSCompletedCallback<PutBucketRefererRequest, PutBucketRefererResult>() {
@Override
public void onSuccess(PutBucketRefererRequest request, PutBucketRefererResult result) {
OSSLog.logInfo("code: " + result.getStatusCode());
}
@Override
public void onFailure(PutBucketRefererRequest request, ClientException clientException, ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();関連ドキュメント
ホットリンク保護の完全なサンプルコードについては、「GitHub」をご参照ください。
ホットリンク保護を設定する API 操作の詳細については、「PutBucketReferer」をご参照ください。
ホットリンク保護設定を取得する API 操作の詳細については、「GetBucketReferer」をご参照ください。