すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ホットリンク保護 (Android SDK)

最終更新日:Nov 30, 2025

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」をご参照ください。