日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

綁定自定義域名至Bucket默認域名

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

文件上傳到OSS后,OSS會使用Bucket的默認域名生成文件訪問地址。當您在瀏覽器中通過默認域名訪問文件時,會觸發強制下載行為。如果您希望在瀏覽器中預覽文件,則需要為Bucket綁定自定義域名,并通過自定義域名訪問Bucket中的文件。對于綁定自定義域名不會影響您對默認域名的使用,您仍然可以繼續使用OSS提供的默認域名。

前提條件

  • 已創建Bucket。具體步驟,請參見創建存儲空間

  • 已注冊域名。支持綁定非阿里云注冊的域名。如果您還未注冊域名,您可以在阿里云域名服務平臺注冊域名。具體步驟,請參見注冊域名

  • 如果要綁定的Bucket在中國內地,確保域名已備案,且賬號已實名認證。如何備案和實名認證,請參見ICP備案流程個人實名認證企業實名認證

使用場景

  • 文件預覽:通過自定義域名訪問OSS Bucket,避免OSS強制增加下載響應頭,實現在瀏覽器中預覽文件。

  • 訪問.apk或者.ipa的文件:出于安全考慮,通過OSS默認公網域名訪問20230815日后創建的Bucket中后綴為.apk或者.ipa的文件,服務器返回400錯誤。使用自有域名訪問后綴為.apk或者.ipa的文件時將不會被阻斷。

  • 品牌形象和專業性:將自定義域名綁定到OSS Bucket,提供個性化域名,增強品牌形象和專業性,增加用戶信任度。

  • 防止域名被攔截:一些應用或平臺可能會對Bucket默認域名進行攔截。您可以為Bucket綁定自定義域名,以確保您的OSS Bucket中的資源能夠被正常訪問。

  • 訪問方便性:使用自定義域名訪問OSS Bucket,方便易記,相比使用OSS默認域名,更簡潔友好,輕松訪問和分享資源。

  • 用戶體驗優化:通過自定義域名,提高訪問速度,結合CDN加速技術,實現快速內容分發和下載,減少延遲,提升用戶體驗。

  • 鏈接的持久性:綁定自定義域名到OSS Bucket后,即使后續存儲位置或服務有變化,用戶仍可使用相同域名訪問資源,確保鏈接的持久性,長期可訪問和使用存儲資源。

背景信息

訪問Bucket默認域名或傳輸加速域名會默認下載文件,而訪問自定義域名會默認預覽文件的原因如下:

訪問Bucket默認域名或傳輸加速域名

出于數據傳輸安全考慮,使用OSS提供的Bucket默認域名(<bucketName>.oss-<regionId>.aliyuncs.com)或傳輸加速域名(<bucketName>.oss-accelerate.aliyuncs.com)訪問Bucket的文件(網頁、圖片)時,OSS會在返回中強制增加下載響應頭(x-oss-force-download: trueContent-Disposition: attachment)。瀏覽器檢測到Content-Disposition: attachment時,會觸發強制下載行為。使用OSS提供的域名訪問文件時,觸發下載行為的請求流程如下:

2.png

關于使用OSS的默認Bucket域名或傳輸加速域名訪問文件,觸發自動下載的生效時間和生效對象,請參見附錄:強制下載命中的x-oss-ec規則

訪問自定義域名

您可以在已注冊的域名(例如example.com)上自定義一個子域名(例如static.example.com),并將其綁定至Bucket,然后使用自定義域名訪問文件。此時,OSS不會在返回中強制增加下載響應頭。由于OSS沒有設置Content-Disposition字段,瀏覽器會默認將其設置為inline。瀏覽器會直接顯示文件內容,而不是下載文件。使用自定義域名訪問文件,默認預覽行為的請求流程如下:

1.png

使用限制

  • 不支持綁定中文域名。

  • 每個域名只能綁定至一個Bucket。

  • 每個Bucket最多可以綁定100個域名。

  • 通過OSS管理控制臺綁定自定義域名時,不允許綁定泛域名(將域名前綴設置為*,從而將主域名的所有子域名都指向Bucket默認域名)。通過CDN加速OSS時,允許綁定泛域名,但該域名不會在OSS管理控制臺顯示。

操作步驟

步驟一:綁定自定義域名

根據域名所屬服務提供商和所屬賬號,參考對應的步驟將域名綁定至OSS Bucket。

說明
  • 如果您不確定域名所屬服務提供商,您可以在域名信息查詢(WHOIS)頁面進行查詢。

  • 如果您不確定域名是否屬于當前阿里云賬號,您可以在云解析DNS控制臺進行查詢。

  • 綁定的自定義域名中涉及的頂級域名必須滿足指定后綴的要求,否則會被視為無效域名,最終導致域名綁定失敗。更多信息,請參見頂級域名分類解析

綁定當前阿里云賬號注冊的域名

將當前阿里云賬號注冊的域名,綁定至OSS Bucket的操作步驟如下:

  1. 登錄OSS管理控制臺

  2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

  3. 在左側導航欄,選擇Bucket 配置>域名管理

  4. 域名管理頁面,單擊綁定域名

  5. 綁定域名面板,輸入要綁定的域名,例如static.example.com,然后單擊確認綁定

  6. 添加CNAME記錄,將自定義域名static.example.com解析至被綁定的Bucket的默認外網域名。

    自動添加

    開啟自動添加 CNAME 記錄

    1.png

    開啟后,OSS會在云解析DNS自動添加一條CNAME記錄。示例如下:1.png

    手動添加

    如果沒有開啟自動添加 CNAME 記錄,您需要在云解析DNS控制臺手動添加一條CNAME記錄,否則綁定的自定義域名不會生效。

    1. 登錄云解析DNS控制臺

    2. 公網DNS解析 > 權威域名解析,單擊目標域名右側的解析設置

    3. 單擊添加記錄,填寫域名解析信息。

      參數

      說明

      示例值

      記錄類型

      選擇CNAME記錄將域名解析指向另一個域名

      CNAME

      主機記錄

      填寫要綁定的域名的前綴。

      static

      解析請求來源

      解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。

      默認

      記錄值

      填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名

      examplebucket.oss-cn-hangzhou.aliyuncs.com

      TTL

      域名的更新周期,保留默認值即可。

      說明

      生效TTL的時間有一定的延遲,請以實際為準。

      10分鐘

    4. 單擊確定

      完成后,云解析DNS會出現一條CNAME記錄。示例如下:1.png

綁定其他阿里云賬號注冊的域名

將阿里云A賬號注冊的域名,綁定至阿里云B賬號的OSS Bucket的操作步驟如下:

  1. 使用阿里云B賬號,獲取TXT記錄的主機記錄和記錄值。

    1. 登錄OSS管理控制臺

    2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

    3. 在左側導航欄,選擇Bucket 配置>域名管理

    4. 域名管理頁面,單擊綁定域名

    5. 綁定域名面板,輸入要綁定的阿里云A賬號的自定義域名,例如static.example.com,然后復制頁面顯示的主機記錄記錄值

  2. 使用阿里云A賬號,添加TXT記錄。

    1. 登錄云解析DNS控制臺

    2. 在域名解析列表中,單擊目標域名右側的解析設置

    3. 單擊添加記錄,填寫域名解析信息。

      參數

      說明

      示例值

      記錄類型

      選擇域名指向的類型為TXT。

      TXT

      主機記錄

      阿里云云解析DNS已自動幫你填寫了主域名。因此,填寫時,不需要手動填寫主域名部分。

      • 如果綁定的是主域名,填寫_dnsauth。例如域名為example.com,填寫_dnsauth

      • 如果綁定的是子域名,填寫_dnsauth.<域名前綴>。例如域名為static.example.com,填寫_dnsauth.static

      _dnsauth.static

      解析請求來源

      解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。

      默認

      記錄值

      填寫使用阿里云B賬號獲取的TXT記錄中的CnameToken。

      b0d777f7ccddeae93358d908ed59****

      TTL

      域名的更新周期,保留默認值即可。

      說明

      生效TTL的時間有一定的延遲,請以實際為準。

      10分鐘

    4. 單擊確定

  3. 使用阿里云B賬號,在OSS控制臺的綁定域名面板,單擊驗證域名所有權并綁定

  4. 使用阿里云A賬號,添加CNAME記錄。

    1. 在域名解析列表中,單擊目標域名右側的解析設置

    2. 單擊添加記錄,填寫域名解析信息。

      參數

      說明

      示例值

      記錄類型

      選擇域名指向的類型為CNAME。

      CNAME

      主機記錄

      根據域名前綴填寫主機記錄。

      • 如果是主域名,例如example.com,輸入@

      • 如果是子域名,輸入域名的前綴。例如域名為static.example.com,輸入static。

      static

      解析請求來源

      解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。

      默認

      記錄值

      填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名

      examplebucket.oss-cn-hangzhou.aliyuncs.com

      TTL

      域名的更新周期,保留默認值即可。

      說明

      生效TTL的時間有一定的延遲,請以實際為準。

      10分鐘

    3. 單擊確定

綁定非阿里云賬號注冊的域名

將在其他域名服務提供商注冊的域名,綁定至OSS Bucket的操作步驟如下:

  1. 在阿里云OSS,生成TXT記錄的主機記錄和記錄值。

    1. 登錄OSS管理控制臺

    2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

    3. 在左側導航欄,選擇Bucket 配置>域名管理

    4. 域名管理頁面,單擊綁定域名

    5. 綁定域名面板,輸入在其他域名服務提供商注冊的域名,例如static.example.com,然后復制頁面顯示的主機記錄記錄值

  2. 在域名服務提供商的DNS解析平臺,參考下表添加TXT記錄。

    參數

    說明

    示例值

    記錄類型

    選擇域名指向的類型為TXT。

    TXT

    主機記錄

    如果其他域名服務提供商的DNS解析平臺已自動幫你填寫了主域名,填寫時,不需要手動填寫主域名部分。

    • 如果綁定的是主域名,填寫_dnsauth。例如域名為example.com,填寫_dnsauth

    • 如果綁定的是子域名,填寫_dnsauth.<域名前綴>。例如域名為static.example.com,填寫_dnsauth.static

    _dnsauth.static

    記錄值

    填寫從阿里云OSS獲取的TXT記錄中的CnameToken。

    b0d777f7ccddeae93358d908ed59****

  3. 在阿里云OSS控制臺的綁定域名面板,單擊驗證域名所有權并綁定

  4. 在域名服務提供商的DNS解析平臺,參考下表添加CNAME記錄。

    參數

    說明

    示例值

    記錄類型

    選擇域名指向的類型為CNAME。

    CNAME

    主機記錄

    根據域名前綴填寫主機記錄。

    • 如果是主域名,例如example.com,輸入@

    • 如果是子域名,輸入域名前綴。例如域名為static.example.com,輸入static。

    static

    記錄值

    填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名

    examplebucket.oss-cn-hangzhou.aliyuncs.com

步驟二:驗證自定義域名

綁定自定義域名后,您可以使用nslookupdig命令來驗證自定義域名解析是否生效。如果域名解析結果顯示為您綁定的Bucket的外網訪問域名,則說明自定義域名的CNAME解析已生效。

nslookup

static.example.com替換為您要查詢的域名,然后執行以下命令。

nslookup -type=CNAME static.example.com

成功返回示例如下。

1.png

dig

static.example.com替換為您要查詢的域名,然后執行以下命令。

dig CNAME static.example.com

成功返回示例如下。

2.png

步驟三:使用自定義域名

自定義域名生效后,您可以直接通過HTTP協議訪問文件。

重要

HTTP協議無法確保數據在傳輸過程中的安全性,即數據可能存在被第三方截取或篡改的風險。考慮到數據安全的重要性,強烈推薦您采用HTTPS協議進行訪問。具體操作,請參見使用HTTPS協議

  1. 上傳文件。

    具體操作,請參見簡單上傳

  2. 獲取文件URL。

    臨時文件URL

    獲取臨時有效的文件URL的操作步驟如下:

    1. 設置文件讀寫權限ACL為私有。

      具體操作,請參見設置Object ACL

    2. 私有文件URL的格式為http://YourDomain/ObjectName?簽名參數。您可以通過以下方法獲取文件URL并設置URL的有效時長。

    使用OSS控制臺

    1. 登錄OSS管理控制臺

    2. 單擊Bucket列表,然后單擊目標Bucket名稱。

    3. 在左側導航欄,選擇文件管理 > 文件列表

    4. 在文件列表頁面,單擊目標文件名稱。

    5. 詳情面板的自有域名,選擇綁定的自定義域名,其他保持默認值,然后單擊復制文件URL

      2.png

    使用圖形化管理工具ossbrowser

    ossbrowser支持Object級別的操作與控制臺支持的操作類似,請按照ossbrowser界面指引完成獲取簽名URL的操作。

    1.png

    如何下載并使用ossbrowser,請參見圖形化管理工具ossbrowser 2.0(預覽版)

    使用阿里云SDK

    1. 使用自定義域名新建OssClient。

    2. Java

      // yourEndpoint填寫自定義域名。
      String endpoint = "yourEndpoint";
      
      // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
      EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
      
      // 創建ClientBuilderConfiguration實例,您可以根據實際情況修改默認參數。
      ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
      
      // 設置是否支持CNAME。CNAME用于將自定義域名綁定到目標Bucket。
      conf.setSupportCname(true);
      
      // 創建OSSClient實例。
      OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
      
      // 關閉OSSClient。
      ossClient.shutdown();                    

      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\CoreOssException;
      
      // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。 
      $provider = new EnvironmentVariableCredentialsProvider();
      // 填寫自定義域名,例如http://example.com。
      $endpoint = "http://example.com";
      
      try {
          $config = array(
              "provider" => $provider,
              "endpoint" => $endpoint,
              "cname"	=> true
          );
          $ossClient = new OssClient($config);    
      } catch (OssException $e) {
          print $e->getMessage();
      }    
                      

      Node.js

      const OSS = require('ali-oss')
      
      const client = new OSS({
        // 使用自定義域名作為Endpoint。
        endpoint: 'http://img.example.com', 
        // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。
        accessKeyId: process.env.OSS_ACCESS_KEY_ID,
        accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
        authorizationV4: true,
        // yourRegion填寫Bucket所在地域。以華東1(杭州)為例,Region填寫為cn-hangzhou。
        region: 'yourRegion',
        cname: true
      });

      Python

      # -*- coding: utf-8 -*-
      import oss2
      from oss2.credentials import EnvironmentVariableCredentialsProvider
      
      # 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
      auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
      
      # 填寫自定義域名,例如example.com。
      cname = 'http://example.com'
      
      # 填寫Bucket名稱,并設置is_cname=True來開啟CNAME。CNAME是指將自定義域名綁定到存儲空間。
      bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)   

      Browser.js

      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8" />
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />
          <title>Document</title>
          <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
        </head>
        <body>
          <script>
            const client = new OSS({
              // 填寫自定義域名,例如example.com。
              // yourRegion填寫Bucket所在地域。以華東1(杭州)為例,yourRegion填寫為oss-cn-hangzhou。
              region: 'yourRegion',
              endpoint: "example.com",
              authorizationV4: true,
              // 從STS服務獲取的臨時訪問密鑰(AccessKey IDAccessKey Secret)。
              accessKeyId: "yourAccessKeyId",
              accessKeySecret: "yourAccessKeySecret",
              // 從STS服務獲取的安全令牌(SecurityToken)。
              stsToken: 'yourSecurityToken',
              // 填寫Bucket名稱,例如examplebucket。
              bucket: "examplebucket",
              cname: true,
            });    
                
          </script>
        </body>
      </html>
      

      .NET

      using Aliyun.OSS;
      using Aliyun.OSS.Common;
      // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。
      var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
      var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
      // 填寫自定義域名。
      const string endpoint = "yourDomain";
      
      // 創建ClientConfiguration實例,按照您的需要修改默認參數。
      var conf = new ClientConfiguration();
      
      // 打開CNAME開關。CNAME是指將自定義域名綁定到存儲空間的過程。
      conf.IsCname = true;
      
      // 創建OssClient實例。
      var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);                    

      Android

      // yourEndpoint填寫自定義域名。
      String endpoint = "yourEndpoint";
      // 從STS服務獲取的臨時訪問密鑰(AccessKey IDAccessKey Secret)。
      String accessKeyId = "yourAccessKeyId";
      String accessKeySecret = "yourAccessKeySecret";
      // 從STS服務獲取的安全令牌(SecurityToken)。
      String securityToken = "yourSecurityToken";
      // yourEndpoint填寫Bucket所在地域。以華東1(杭州)為例,region填寫為cn-hangzhou。
      String region = "yourRegion";
      
      OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
      ClientConfiguration config = new ClientConfiguration();
      config.setSignVersion(SignVersion.V4);
      // 創建OSSClient實例。
      OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
      oss.setRegion(region);

      Go

      package main
      
      import (
      	"log"
      
      	"github.com/aliyun/aliyun-oss-go-sdk/oss"
      )
      
      // handleError 用于處理不可恢復的錯誤,并記錄錯誤信息后終止程序。
      func handleError(err error) {
      	log.Fatalf("Error: %v", err)
      }
      
      // setupClient 用于設置并創建OSS客戶端實例,支持CNAME。
      // 參數:
      //
      //	endpoint - 自定義域名,即綁定到存儲空間的自定義域名。
      //
      // 返回創建的OSS客戶端實例。
      func setupClient(endpoint string) (*oss.Client, error) {
      	// 從環境變量中獲取訪問憑證。
      	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
      	if err != nil {
      		return nil, err
      	}
      
      	// 創建OSSClient實例,并啟用CNAME支持。
      	// yourRegion填寫Bucket所在地域,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。
      	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
      	clientOptions = append(clientOptions, oss.Region("yourRegion"))
      	clientOptions = append(clientOptions, oss.UseCname(true))
      	// 設置簽名版本
      	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
      	client, err := oss.New(endpoint, "", "", clientOptions...)
      	if err != nil {
      		return nil, err
      	}
      
      	return client, nil
      }
      
      func main() {
      	// yourEndpoint填寫Bucket對應的自定義域名。
      	// 示例:填寫為 "custom-domain-for-your-bucket.com"。
      	endpoint := "yourEndpoint"
      
      	// 檢查環境變量是否已經設置。
      	if endpoint == "" {
      		log.Fatal("Please set yourEndpoint.")
      	}
      
      	// 設置并創建OSS客戶端實例,支持CNAME。
      	client, err := setupClient(endpoint)
      	if err != nil {
      		handleError(err)
      	}
      
      	// 輸出客戶端信息。
      	log.Printf("Client: %#v\n", client)
      }
      

      iOS

      // yourEndpoint填寫自定義域名。
      NSString *endpoint = @"yourEndpoint";
      // 從STS服務獲取的臨時訪問密鑰(AccessKey IDAccessKey Secret)。
      NSString *accessKeyId = @"yourAccessKeyId";
      NSString *accessKeySecret = @"yourAccessKeySecret";
      // 從STS服務獲取的安全令牌(SecurityToken)。
      NSString *securityToken = @"yourSecurityToken";
      
      id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
      OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider];

      C++

      #include <alibabacloud/oss/OssClient.h>
      using namespace AlibabaCloud::OSS;
      
      int main(void)
      {
          /* 初始化OSS賬號信息。*/
                  
          /* yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
          std::string Endpoint = "yourEndpoint";
          
          /* 初始化網絡等資源。*/
          InitializeSdk();
      
          ClientConfiguration conf;
          /* 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。*/
          auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
          OssClient client(Endpoint, credentialsProvider, conf);   
      
          /* 釋放網絡等資源。*/
          ShutdownSdk();
          return 0;
      }

      C

      #include "oss_api.h"
      #include "aos_http_io.h"
      /* 填寫自定義域名。*/
      const char *endpoint = "yourCustomEndpoint";
      
      void init_options(oss_request_options_t *options) {
          options->config = oss_config_create(options->pool);
          /* 用char*類型的字符串初始化aos_string_t類型。*/
          aos_str_set(&options->config->endpoint, endpoint);
          /* 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。*/  
          aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
          aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
          /* 開啟CNAME,將自定義域名綁定到存儲空間上。*/
          options->config->is_cname = 1;
          options->ctl = aos_http_controller_create(options->pool, 0);
      }
      int main() {
          aos_pool_t *p;
          oss_request_options_t *options;
          /* 初始化全局變量,在程序生命周期內只需要調用一次。*/
          if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
              return -1;
          }
          /* 初始化內存池和options。*/
          aos_pool_create(&p, NULL);
          options = oss_request_options_create(p);
          init_options(options);
          /* 邏輯代碼,此處省略。*/
          /* 釋放內存池,相當于釋放了請求過程中各資源分配的內存。*/
          aos_pool_destroy(p);
          /* 釋放之前分配的全局資源,在程序生命周期內只需要調用一次。*/
          aos_http_io_deinitialize();
          return 0;
      }

      Ruby

      require 'aliyun/oss'
      
      client = Aliyun::OSS::Client.new(
        # 使用自定義域名作為Endpoint。
        endpoint: 'http://example.com',
        # 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET。
        access_key_id: ENV['OSS_ACCESS_KEY_ID'],
        access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
        cname: true)
      )
    3. 使用OssClient調用generatePresignedUrl接口獲取簽名URL。

      各語言SDK示例,請參見簽名版本1

    使用命令行工具ossutil

    1. 通過配置文件設置Bucket和自定義域名的映射關系。詳情請參見配置ossutil

    2. 通過sign生成經過簽名的文件URL。詳情請參見sign(生成簽名URL)

    長期文件URL

    警告

    如需獲取長期有效的文件URL,即不存在過期時間。您需要將讀文件讀寫權限ACL設置為公共讀。設置為公共讀后,文件的互聯網上任何用戶都可以對該Object進行訪問,這有可能造成您數據的外泄以及費用激增,建議您使用臨時文件URL。

    獲取長期有效的文件URL的操作步驟如下:

    1. 設置文件讀寫權限ACL為公共讀。

      具體操作,請參見設置Object ACL

    2. 拼接文件URL。

      綁定自定義域名后,如果文件讀寫權限ACL為公共讀,則無需進行簽名操作。公共讀文件URL的格式為http://YourDomainName/ObjectName

      例如,您為華東1(杭州)地域的examplebucket綁定了自定義域名static.example.com,且該Bucket下包含example.jpg的文件,則該文件URLhttp://static.example.com/example.jpg

  3. 在瀏覽器中,訪問生成的文件URL。

    2023-11-07_11-01-40.png

后續操作

使用HTTPS協議

HTTPS協議在HTTP的基礎上整合了SSL/TLS安全協議層,從而為數據傳輸提供了強大的加密保護。使用HTTPS協議訪問之前,您需要購買相應的數字證書并完成證書托管。具體步驟,請參見綁定自定義域名的證書托管

使用CDN加速

如果您希望提升靜態資源訪問的速度和穩定性,您可以為OSS開啟CDN加速,然后將自定義域名綁定到CDN加速域名上。具體操作,請參見綁定CDN加速域名

避免盜刷

如果您希望避免Bucket內的資源被其他人盜用,您可以通過設置Referer列表(包括白名單Referer和黑名單Referer)以及是否允許空Referer的方式,限制您Bucket內資源的訪問來源。具體步驟,請參見防盜鏈

加速跨境傳輸

如果您希望提升跨境訪問的速度和穩定性,您可以將自定義域名綁定到OSS傳輸加速域名上。具體操作,請參見綁定CDN加速域名

托管靜態網站

如果您希望將您的靜態網站托管到OSS,并使用自定義域名訪問,您需要為存儲空間設置靜態網站托管。具體步驟,請參見靜態網站托管

常見問題

備案時不支持選擇OSS作為云服務怎么辦

對于直接使用阿里云OSS托管靜態網站的用戶,由于OSS服務不支持備案,您可以采取以下步驟來滿足備案要求:

  1. 購買用于備案服務器:建議您購買一臺最低配置、時長至少3個月的ECS實例,例如ECS 99套餐,以滿足備案條件。

  2. 進行備案:使用該ECS實例進行相應的備案操作。

  3. 使用備案后的域名:備案成功后,您可以將域名指向阿里云OSS,實現靜態網站的托管。

已有主機記錄與當前添加CNAME記錄生成的主機記錄相同,暫時無法自動添加CNAME記錄

當已有主機記錄與當前自動添加的CNAME記錄相同時,可能有以下幾種情況:

  • 沖突記錄:已存在一個使用相同主機記錄的記錄,但記錄類型可能與CNAME不同。例如,可能已經存在一個A記錄。

  • 重復記錄:已存在一個使用相同主機記錄的記錄,且記錄類型為CNAME記錄。這可能是因為先前已手動添加了相同的記錄。

在這種情況下,您可以在阿里云云解析DNS控制臺根據您的需求來決定如何處理:

  • 如果您希望保留已有的沖突或重復主機記錄,您可以重新自定義一個子域名進行綁定。

  • 如果您不希望保留已有的主機記錄:

    • 如果是沖突記錄,您可以刪除該記錄,然后創建CNAME記錄解析至Bucket域名。

    • 如果是重復記錄,您可以修改記錄,將其解析至Bucket域名。

域名綁定在自己的其他Bucket

您需要解除Bucket綁定的域名,然后重新綁定到當前Bucket上。具體操作,請參見OSS的域名管理中綁定域名時提示“域名綁定在自己的其他Bucket上”

NeedVerifyDomainOwnership

你需要驗證域名所有權。具體操作,請參見綁定自定義域名時返回錯誤碼NeedVerifyDomainOwnership,怎么辦?

綁定自定義域名后,還是無法預覽文件?

如果綁定自定義域名并且CNAME解析生效后,仍然無法預覽文件,請排查以下設置:

設置

異常原因

解決方法

OSS

Content-Type的值與實際的文件類型不一致。瀏覽器無法正確解析和渲染該文件,而只能將其作為下載文件處理。

根據文件類型,設置合理的Content-Type。具體操作,請參見如何設置Content-Type(MIME)?

Content-Disposition被設置為attachment。瀏覽器檢測到Content-Disposition: attachment時,會觸發下載行為。

Content-Disposition設置為inline。具體步驟,請參見管理文件元數據

CDN

緩存資源未刷新。

刷新CDN緩存資源。具體步驟,請參見刷新和預熱資源

瀏覽器

不支持預覽該格式的文件,例如表格文件、文本文件、演示文件以及PDF文件。

您可以為瀏覽器安裝插件以支持預覽該格式的文件。或者,您也可以使用智能媒體管理IMM的文檔在線預覽處理。具體步驟,請參見文檔在線預覽。

已經正常解析到WAF且有內容的域名可以綁定至Bucket嗎?

可以正常綁定。WAF解析和CNAME解析不會發生沖突,因為它們在不同的層面上進行解析和操作。

綁定自定義域名后,之前的文件URL是否可以繼續使用?

可以繼續使用。如何獲取之前的文件URL,請參見使用文件URL分享文件

使用自定義域名就是公網訪問嗎?

一般是通過公網訪問。公網用戶通常需要以預覽的方式訪問您的OSS文件,因此自定義域名默認解析到Bucket的外網訪問域名。

如何使用自定義域名訪問OSS文件時是下載行為?

如需實現使用自定義域名訪問OSS文件時是下載行為,您可以將Content-Disposition設置為attachment。具體操作,請參見如何配置通過自定義域名訪問OSS文件實現強制下載?

如何解除自定義域名綁定?

當您不再使用自定義域名時,您可以參考以下步驟解綁自定義域名。

  1. 如果開啟了CDN加速,需要先關閉CDN加速。

    您需要修改CDN加速服務的源站信息,使加速域名不再指向OSSBucket域名。具體操作,請參見配置源站

  2. 解綁自定義域名。

    1. 登錄OSS管理控制臺

    2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

    3. 在左側導航欄,選擇Bucket配置>域名管理

    4. 在域名列表中,單擊目標域名右側的域名綁定配置

    5. 域名綁定配置面板,單擊解除綁定然后單擊確定

  3. 刪除域名解析。

    解綁自定義域名后,您需要手動刪除配置的TXT解析記錄和CNAME解析記錄。具體操作,請參見刪除記錄

相關API

  • 關于創建域名所有權驗證所需的CnameToken的接口,請參見CreateCnameToken

  • 關于獲取已創建的CnameToken的接口,請參見GetCnameToken

  • 關于為某個Bucket綁定自定義域名的接口,請參見PutCname

  • 關于查詢某個Bucket下綁定的所有自定義域名的接口,請參見ListCname

  • 關于刪除某個Bucket已綁定的自定義域名的接口,請參見DeleteCname

  • 關于使用阿里云解析DNS添加TXT解析記錄或CNAME解析記錄的接口,請參見AddDomainRecord - 根據傳入參數添加解析記錄