Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Pay-by-requester

Son Güncelleme:Oct 01, 2026

Büyük veri kümelerini paylaştığınızda, bir paket için İstek Sahibi Öder modunu etkinleştirebilirsiniz. Bu özellik, veri aktarımı ve istek ücretleri gibi veri erişim maliyetlerini veriyi isteyene yansıtır. Paket sahibi yalnızca depolama ücretlerinden ve diğer sabit maliyetlerden sorumludur. Bir paket için İstek Sahibi Öder etkinleştirildiğinde anonim erişim devre dışı bırakılır ve tüm istekler kimlik doğrulaması gerektirir.

Uygulanabilirlik

İstek Sahibi Öder yalnızca bölge niteliğine sahip paketler için etkinleştirilebilir.

Çalışma mantığı

OSS, istekleri aşağıdaki mantığa göre işler:

  • Bir istek x-oss-request-payer başlığını içeriyorsa OSS isteği yapanın kimliğini doğrular. Kimlik doğrulama başarılı olursa veri aktarımı ve istek ücretleri isteyen tarafından ödenir.

  • Bir istek x-oss-request-payer başlığını içermiyorsa:

    • İsteği yapan paket sahibiyse istek normal şekilde işlenir ve tüm ücretler paket sahibine yansıtılır.

    • İsteği yapan paket sahibi değilse istek reddedilir.

Paket sahibi yapılandırması

1. Adım: İstek Sahibi Öder özelliğini etkinleştirin

  1. OSS konsolu üzerinde oturum açın.

  2. Buckets seçeneğine tıklayın ve ardından hedef paketin adına tıklayın.

  3. Sol gezinme bölmesinde Bucket Settings > Pay-by-requester seçeneğini belirleyin.

  4. Pay-by-requester sayfasında Pay-by-requester anahtarını açın.

  5. Görüntülenen iletişim kutusunda OK seçeneğine tıklayın.

2. Adım: İsteyene erişim izni verin

İsteyene erişim izinleri vermek için bir Paket İlkesi kullanın. Bu izinler olmadan isteyen verilere erişemez.

  1. Buckets sayfasında hedef paketin adına tıklayın.

  2. Sol gezinme bölmesinde Permission Control > Bucket Policy seçeneğini belirleyin.

  3. Bucket Policy sayfasında Add in GUI sekmesinde Authorize seçeneğine tıklayın.

  4. Authorize panelinde ilkeyi yapılandırın. Authorized User için Other Accounts seçeneğini belirleyin ve isteyenin Alibaba Cloud hesap kimliğini veya RAM rolünün ARN değerini girin. Biçim şu şekildedir: arn:sts::{RoleOwnerUid}:assumed-role/{RoleName}/{RoleSessionName}.

  5. OK seçeneğine tıklayın.

İsteyen olarak verilere erişme

İsteyen olarak OSS hizmetini etkinleştirmiş olmanız ve İstek Sahibi Öder özelliği etkinleştirilmiş bir pakete erişirken ortaya çıkacak ücretleri ödemeyi kabul ettiğinizi isteğinizde belirtmeniz gerekir.

Konsol

  1. OSS konsolu üzerinde oturum açın.

  2. Sol gezinme bölmesinde Favorite Paths yanındaki artı işaretine (+) tıklayın.

  3. Add Favorite Paths iletişim kutusunda parametreleri aşağıdaki tabloda açıklandığı gibi yapılandırın.


    Parametre


    Açıklama


    Adding method


    Yetkilendirilmiş paketi favori yollarınıza eklemek için Add from other authorized buckets seçeneğini belirleyin.


    Region


    Yetkilendirilmiş paketin bulunduğu bölgeyi seçin.


    Bucket


    Yetkilendirilmiş paketin adını girin.


    Pay-by-requester


    Ödemeyi kabul ettiğinizi onaylamak için I understand and agree seçeneğini belirleyin. Daha sonra dosya yolundaki belirtilen kaynaklara erişebilirsiniz. Pakete erişimden kaynaklanan veri aktarımı ve istek ücretleri gibi ücretler size faturalandırılır.

SDK

Aşağıdaki kod PutObject GetObject ve DeleteObject işlemlerini çağırarak nesnelere erişirken ücretlerin üçüncü taraflara yansıtılmasının nasıl belirtileceğine dair bir örnek sunar. Nesneler üzerinde okuma ve yazma işlemleri gerçekleştirirken ücretlerin üçüncü taraflara yansıtılmasını belirtmek için diğer API işlemlerini çağırırken de benzer yöntemi kullanabilirsiniz.

Bir üçüncü taraf bir nesne işlemi gerçekleştirdiğinde HTTP üst bilgisine x-oss-request-payer:requester parametresini eklemelidir. Aksi takdirde istek başarısız olur.

Java

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.io.ByteArrayInputStream;

public class Demo {
    public static void main(String[] args) throws Exception{
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. For more information about the endpoints of other regions, see Regions and endpoints. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path. 
        String objectName = "exampledir/exampleobject.txt";
        Payer payer = Payer.Requester;
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";
        
        // Create an OSS Client instance. 
        // Call the shutdown method to release associated resources when the OSS Client is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();
        try {
            // Specify the payer when a third party calls the PutObject operation. 
            String content = "hello";
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
            putObjectRequest.setRequestPayer(payer);
            ossClient.putObject(putObjectRequest);

            // Specify the payer when a third party calls the GetObject operation. 
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
            getObjectRequest.setRequestPayer(payer);
            OSSObject ossObject = ossClient.getObject(getObjectRequest);
            ossObject.close();

            // Specify the payer when a third party calls the DeleteObject operation. 
            GenericRequest genericRequest = new GenericRequest(bucketName, objectName);
            genericRequest.setRequestPayer(payer);
            ossClient.deleteObject(genericRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Throwable ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            // Shut down the OSSClient instance. 
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.headers import OSS_REQUEST_PAYER

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"

# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
object_name = 'exampledir/exampleobject.txt'
headers = dict()
headers[OSS_REQUEST_PAYER] = "requester"

# Specify the x-oss-request-payer header in the request to upload the object. 
result = bucket.put_object(object_name, 'test-content', headers=headers)

# Specify the x-oss-request-payer header in the request to download the object. 
result = bucket.get_object(object_name, headers=headers)

# Specify the x-oss-request-payer header in the request to delete the object. 
result = bucket.delete_object(object_name, headers=headers);

Go

package main

import (
	"fmt"
	"io"
	"os"
	"strings"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSSClient instance. 
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
	// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou. Specify the actual region.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Specify the version of the signature algorithm.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	payerClient, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("New Error:", err)
		os.Exit(-1)
	}

	// Specify the name of the bucket. 
	payerBucket, err := payerClient.Bucket("examplebucket")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// If pay-by-requester is enabled, external requesters must set the oss.RequestPayer(oss.Requester) parameter to access authorized content. 
	// If pay-by-requester is not enabled, external requesters are not required to include the oss.RequestPayer(oss.Requester) parameter to access the authorized content. 

	// Upload an object. 
	// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
	key := "exampledir/exampleobject.txt"
	err = payerBucket.PutObject(key, strings.NewReader("objectValue"), oss.RequestPayer("requester"))
	if err != nil {
		fmt.Println("put Error:", err)
		os.Exit(-1)
	}

	// List all objects in the bucket. 
	lor, err := payerBucket.ListObjects(oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Display the names of objects in the bucket. 
	for _, l := range lor.Objects {
		fmt.Println("the Key name is :", l.Key)
	}

	// Download the object. 
	body, err := payerBucket.GetObject(key, oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Get Error:", err)
		os.Exit(-1)
	}
	// You must close the obtained stream after the object is read. Otherwise, connection leaks may occur. Consequently, no connections are available and an exception occurs. 
	defer body.Close()

	// Read and display the obtained content. 
	data, err := io.ReadAll(body)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("data:", string(data))

	// Delete the object. 
	err = payerBucket.DeleteObject(key, oss.RequestPayer(oss.Requester))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

Node.js

const OSS = require('ali-oss');
const bucket = 'bucket-name';
const payer = 'Requester';

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourregion',
  // Obtain access credentials from environment variables. Before running the sample code, make sure the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Set bucket to your bucket name.
  bucket: 'yourBucketName',

});

async function main() {
  await put();
  await get();
  await del();
}

async function put() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the PutObject operation.
  const response = await client.put('fileName', path.normalize('D:\\localpath\\examplefile.txt'), {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('put:', response);
}

async function get() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the GetObject operation.
  const response = await client.get('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('get:', response);
}

async function del() {
  const result = await client.putBucketRequestPayment(bucket, payer);
  console.log('putBucketRequestPayment:', result);
  // Specify the payer for the DeleteObject operation.
  const response = await client.delete('fileName', {
    headers: {
      'x-oss-request-payer': 'requester'
    }
  });
  console.log('delete:', response);
}

main();

C#

using System;
using System.IO;
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;

namespace Samples
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // Specify the name of the bucket. Example: examplebucket. 
            var bucketName = "examplebucket";
            var objectName = "example.txt";
            var objectContent = "More than just cloud.";
            // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
            const string region = "cn-hangzhou";
            // Create a ClientConfiguration instance and modify parameters as required.
            var conf = new ClientConfiguration();
            // Use the signature algorithm V4.
            conf.SignatureVersion = SignatureVersion.V4;
            
            // Create an OSSClient instance.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);

            try
            {
                byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
                MemoryStream requestContent = new MemoryStream(binaryData);
                // Specify the payer when a third party calls the PutObject operation. 
                var putRequest = new PutObjectRequest(bucketName, objectName, requestContent);
                putRequest.RequestPayer = RequestPayer.Requester;
                var result = client.PutObject(putRequest);

                // Specify the payer when a third party calls the GetObject operation. 
                var getRequest = new GetObjectRequest(bucketName, objectName);
                getRequest.RequestPayer = RequestPayer.Requester;
                var getResult = client.GetObject(getRequest);

                // Specify the payer when a third party calls the DeleteObject operation. 
                var delRequest = new DeleteObjectRequest(bucketName, objectName);
                delRequest.RequestPayer = RequestPayer.Requester;
                client.DeleteObject(delRequest);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

PHP

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// Specify the name of the bucket. Example: examplebucket. 
$bucket= "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
$object = "exampledir/exampleobject.txt";

// Enable pay-by-requester for the bucket. 
$options = array(
  OssClient::OSS_HEADERS => array(
  OssClient::OSS_REQUEST_PAYER => 'requester',
));

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // Specify the payer when a third party calls the PutObject operation. 
    $content = "hello";
    $ossClient->putObject($bucket, $object, $content, $options);

    // Specify the payer when a third party calls the GetObject operation. 
    $ossClient->getObject($bucket, $object, $options);

    // Specify the payer when a third party calls the DeleteObject operation. 
    $ossClient->deleteObject($bucket, $object, $options);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n"); 

C++


#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
    /* Initialize the OSS account information. */
    
    /* Set yourEndpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    
    /* Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. */
    std::string Region = "yourRegion";
    
    /* Specify the name of the bucket that the requester wants to access. For example, examplebucket. */
    std::string BucketName = "examplebucket";    
    /* Specify the full path of the object that the requester wants to access. The full path cannot contain the bucket name. For example, exampledir/exampleobject.txt. */
    std::string ObjectName = "exampleobject.txt";
    /* Initialize network resources. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Obtain access credentials from environment variables. Before you run this sample code, make sure that the requester's OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET are set as environment variables. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);    

    /* Set the pay-by-requester mode when you upload a file. */
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    PutObjectRequest putrequest(BucketName, ObjectName, content);
    putrequest.setRequestPayer(RequestPayer::Requester);
    auto putoutcome = client.PutObject(putrequest);

    /* Set the pay-by-requester mode when you download a file to the local memory. */
    GetObjectRequest getrequest(BucketName, ObjectName);
    getrequest.setRequestPayer(RequestPayer::Requester);
    auto getoutcome = client.GetObject(getrequest);

    /* Set the pay-by-requester mode when you delete a file. */
    DeleteObjectRequest delrequest(BucketName, ObjectName);
    delrequest.setRequestPayer(RequestPayer::Requester);
    auto deloutcome = client.DeleteObject(delrequest);

    /* Release network resources. */
    ShutdownSdk();
    return 0;
}

ossutil

Kullanmadan önce ossutil aracını yüklemeniz gerekir.

Örneğin cp komutunu kullanarak bir nesne indirmek için --request-payer=requester parametresini belirtin.

ossutil cp oss://examplebucket/examplefile.txt  /localpath  --request-payer=requester

API

Doğrudan REST API isteği yaparken isteğinize x-oss-request-payer: requester başlığını ekleyin. Bu başlığın imza hesaplamasına da dahil edildiğinden emin olun. İmza hesaplaması hakkında daha fazla bilgi için bkz. Başlıkta imza ekleme.

GET /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 06:38:30 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

Üretim ortamı dikkat edilecek noktalar

  • RAM rolü üzerinden erişim faturalaması: Bir isteyen Alibaba Cloud RAM rolünü üstlenerek verilere eriştiğinde RAM rolünün ait olduğu hesap isteği öder.

    • Yanlış uygulama: İsteyenlere erişim izinleri kazandırmak için paket sahibinin hesabından bir RAM rolü üstlenmelerine izin vermek. Bu senaryoda tüm istekler paket sahibi olarak yürütülür ve ortaya çıkan istek ve veri aktarım ücretleri paket sahibine yansıtılır. Bu uygulama maliyetleri isteyene kaydırmaz.

    • Doğru uygulama: Erişim izinlerini doğrudan bir Paket İlkesi kullanarak isteyene verin.

  • Ön imzalı URL tuzakları:

    • Yanlış uygulama: Paket sahibi kendi erişim kimlik bilgilerini (bir AccessKey çifti veya STS geçici kimlik bilgileri) kullanarak ön imzalı bir URL oluşturur ve paylaşır. Bu durumda istekler paket sahibi tarafından yapılır ve ilgili ücretler paket sahibine yansıtılır.

    • Doğru uygulama: İsteyen kendi erişim kimlik bilgilerini (bir AccessKey çifti veya STS geçici kimlik bilgileri) kullanarak ön imzalı bir URL oluşturur ve URL'yi oluştururken x-oss-request-payer=requester parametresini ekler. İmzanın nasıl hesaplanacağı hakkında daha fazla bilgi için bkz. URL'de imza ekleme. Bu URL paylaşıldığında ve kullanıldığında ücretler URL'yi oluşturan isteyene yansıtılır.

  • Uyumluluk riskleri: İstek Sahibi Öder özelliğinin etkinleştirilmesi statik web sitesi barındırma için gereken anonim erişimi engelleyebilir ve bu da web sitenizin kullanılamaz hale gelmesine neden olabilir. Web sitenizin ön uç kaynaklarını (HTML CSS ve JS) ve İstek Sahibi Öder gerektiren verileri ayrı paketlerde dağıtmanızı öneririz.

Faturalama

Bir paket için İstek Sahibi Öder etkinleştirilmeden önce tüm ücretler paket sahibi tarafından ödenir. İstek Sahibi Öder etkinleştirildikten sonra isteyenin hesabı aşağıdaki faturalandırılabilir öğeler için ödeme yapar. Paket sahibinin hesabı diğer tüm faturalandırılabilir öğeler için ücretlendirilmeye devam eder. Faturalandırılabilir öğelerin tam listesi için bkz. OSS Fiyatlandırması.

Ücret

Faturalandırılabilir öğe

Trafik ücretleri

İnternet üzerinden giden trafik

Kaynak trafiği

İstek ücretleri

PUT istekleri

GET istekleri

Veri işleme

Sık Erişilmeyen Depolamadan veri alma

Arşiv Depolamadan veri alma