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

綁定自定義域名至Bucket默認(rèn)域名

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。

文件上傳到OSS后,OSS會(huì)使用Bucket默認(rèn)域名生成文件訪問(wèn)地址。使用瀏覽器訪問(wèn)該地址時(shí),會(huì)觸發(fā)強(qiáng)制下載行為。如果您有在瀏覽器中預(yù)覽文件的需求,需要為Bucket綁定自定義域名,然后通過(guò)自定義域名訪問(wèn)該Bucket中的文件。綁定自定義域名后,不影響繼續(xù)使用OSS提供的域名。

前提條件

使用場(chǎng)景

  • 文件預(yù)覽:通過(guò)自定義域名訪問(wèn)OSS Bucket,避免OSS強(qiáng)制增加下載響應(yīng)頭,實(shí)現(xiàn)在瀏覽器中預(yù)覽文件。

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

  • 防止域名被攔截:一些應(yīng)用或平臺(tái)可能會(huì)對(duì)Bucket默認(rèn)域名進(jìn)行攔截。您可以為Bucket綁定自定義域名,以確保您的OSS Bucket中的資源能夠被正常訪問(wèn)。

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

  • 用戶體驗(yàn)優(yōu)化:通過(guò)自定義域名,提高訪問(wèn)速度,結(jié)合CDN加速技術(shù),實(shí)現(xiàn)快速內(nèi)容分發(fā)和下載,減少延遲,提升用戶體驗(yàn)。

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

背景信息

訪問(wèn)Bucket默認(rèn)域名或傳輸加速域名會(huì)默認(rèn)下載文件,而訪問(wèn)自定義域名會(huì)默認(rèn)預(yù)覽文件的原因如下:

訪問(wèn)Bucket默認(rèn)域名或傳輸加速域名

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

2.png

關(guān)于使用OSS的默認(rèn)Bucket域名或傳輸加速域名訪問(wèn)文件,觸發(fā)自動(dòng)下載的生效時(shí)間和生效對(duì)象,請(qǐng)參見附錄:強(qiáng)制下載命中的x-oss-ec規(guī)則

訪問(wèn)自定義域名

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

1.png

使用限制

  • 不支持綁定中文域名。

  • 每個(gè)域名只能綁定至一個(gè)Bucket。

  • 每個(gè)Bucket最多可以綁定100個(gè)域名。

  • 通過(guò)OSS管理控制臺(tái)綁定自定義域名時(shí),不允許綁定泛域名(將域名前綴設(shè)置為*,從而將二級(jí)域名的所有子域名都指向Bucket默認(rèn)域名)。通過(guò)CDN加速OSS時(shí),允許綁定泛域名,但該域名不會(huì)在OSS管理控制臺(tái)顯示。

操作步驟

步驟一:綁定自定義域名

根據(jù)域名所屬服務(wù)提供商和所屬賬號(hào),參考對(duì)應(yīng)的步驟將域名綁定至OSS Bucket。

說(shuō)明
  • 如果您不確定域名所屬服務(wù)提供商,您可以在域名信息查詢(WHOIS)頁(yè)面進(jìn)行查詢。

  • 如果您不確定域名是否屬于當(dāng)前阿里云賬號(hào),您可以在云解析DNS控制臺(tái)進(jìn)行查詢。

  • 綁定的自定義域名中涉及的頂級(jí)域名必須滿足指定后綴的要求,否則會(huì)被視為無(wú)效域名,最終導(dǎo)致域名綁定失敗。更多信息,請(qǐng)參見頂級(jí)域名后綴列表

綁定當(dāng)前阿里云賬號(hào)注冊(cè)的域名

將當(dāng)前阿里云賬號(hào)注冊(cè)的域名,綁定至OSS Bucket的操作步驟如下:

  1. 登錄OSS管理控制臺(tái)

  2. 單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。

  3. 在左側(cè)導(dǎo)航欄,選擇Bucket 配置>域名管理

  4. 域名管理頁(yè)面,單擊綁定域名

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

  6. 開啟自動(dòng)添加 CNAME 記錄

    成功提交后,云解析DNS會(huì)根據(jù)您填寫的域名自動(dòng)添加一條CNAME記錄,將自定義域名解析至被綁定的Bucket的外網(wǎng)訪問(wèn)域名。1.png

    說(shuō)明

    如果您沒(méi)有開啟自動(dòng)添加 CNAME 記錄,在提交后,您需要在云解析DNS控制臺(tái)手動(dòng)添加一條CNAME記錄,否則綁定的自定義域名不會(huì)生效。

綁定其他阿里云賬號(hào)注冊(cè)的域名

將阿里云A賬號(hào)注冊(cè)的域名,綁定至阿里云B賬號(hào)的OSS Bucket的操作步驟如下:

  1. 使用阿里云B賬號(hào),獲取TXT記錄的主機(jī)記錄和記錄值。

    1. 登錄OSS管理控制臺(tái)

    2. 單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。

    3. 在左側(cè)導(dǎo)航欄,選擇Bucket 配置>域名管理

    4. 域名管理頁(yè)面,單擊綁定域名

    5. 綁定域名面板,輸入要綁定的阿里云A賬號(hào)的自定義域名,例如static.example.com,然后復(fù)制頁(yè)面顯示的主機(jī)記錄中的_dnsauth記錄值

      Dingtalk_20240522181245.jpg

      重要

      復(fù)制TXT記錄值后,請(qǐng)保持綁定域名面板,直到最終完成提交。如果關(guān)閉綁定域名面板,TXT記錄值會(huì)失效,導(dǎo)致之后驗(yàn)證域名所有權(quán)失敗。

  2. 使用阿里云A賬號(hào),添加TXT記錄。

    1. 登錄云解析DNS控制臺(tái)

    2. 在域名解析列表中,單擊目標(biāo)域名右側(cè)的解析設(shè)置

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

      參數(shù)

      說(shuō)明

      示例值

      記錄類型

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

      TXT

      主機(jī)記錄

      填寫使用阿里云B賬號(hào)獲取的TXT記錄的主機(jī)記錄。

      _dnsauth

      解析請(qǐng)求來(lái)源

      解析域名時(shí)使用的線路。 建議選擇默認(rèn),系統(tǒng)將自動(dòng)選擇最佳線路。

      默認(rèn)

      記錄值

      填寫使用阿里云B賬號(hào)獲取的TXT記錄中的CnameToken。

      b0d777f7ccddeae93358d908ed59****

      TTL

      域名的更新周期,保留默認(rèn)值即可。

      說(shuō)明

      生效TTL的時(shí)間有一定的延遲,請(qǐng)以實(shí)際為準(zhǔn)。

      10分鐘

    4. 單擊確定

  3. 使用阿里云B賬號(hào),在OSS控制臺(tái)的綁定域名面板,單擊驗(yàn)證域名所有權(quán)并綁定

  4. 使用阿里云A賬號(hào),添加CNAME記錄。

    1. 在域名解析列表中,單擊目標(biāo)域名右側(cè)的解析設(shè)置

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

      參數(shù)

      說(shuō)明

      示例值

      記錄類型

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

      CNAME

      主機(jī)記錄

      根據(jù)域名前綴填寫主機(jī)記錄。

      • 如果是二級(jí)域名,例如example.com,輸入@

      • 如果是三級(jí)域名,輸入三級(jí)域名的前綴。例如域名為static.example.com,輸入static。

      static

      解析請(qǐng)求來(lái)源

      解析域名時(shí)使用的線路。 建議選擇默認(rèn),系統(tǒng)將自動(dòng)選擇最佳線路。

      默認(rèn)

      記錄值

      填寫B(tài)ucket的外網(wǎng)訪問(wèn)域名。Bucket域名的結(jié)構(gòu)為<bucketname>.<endpoint>。關(guān)于不同地域的外網(wǎng)Endpoint,請(qǐng)參見訪問(wèn)域名和數(shù)據(jù)中心

      examplebucket.oss-cn-hangzhou.aliyuncs.com

      TTL

      域名的更新周期,保留默認(rèn)值即可。

      說(shuō)明

      生效TTL的時(shí)間有一定的延遲,請(qǐng)以實(shí)際為準(zhǔn)。

      10分鐘

    3. 單擊確定

綁定非阿里云賬號(hào)注冊(cè)的域名

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

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

    1. 登錄OSS管理控制臺(tái)

    2. 單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。

    3. 在左側(cè)導(dǎo)航欄,選擇Bucket 配置>域名管理

    4. 域名管理頁(yè)面,單擊綁定域名

    5. 綁定域名面板,輸入在其他域名服務(wù)提供商注冊(cè)的域名,例如static.example.com,然后復(fù)制頁(yè)面顯示的主機(jī)記錄中的_dnsauth記錄值

      重要

      復(fù)制TXT記錄值后,請(qǐng)保持綁定域名面板,直到最終完成提交。如果關(guān)閉綁定域名面板,TXT記錄值會(huì)失效,導(dǎo)致之后驗(yàn)證域名所有權(quán)失敗。

  2. 在域名服務(wù)提供商的DNS解析平臺(tái),參考下表添加TXT記錄。

    參數(shù)

    說(shuō)明

    示例值

    記錄類型

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

    TXT

    主機(jī)記錄

    填寫從阿里云OSS獲取的TXT記錄的主機(jī)記錄,并按照域名服務(wù)提供商的DNS解析平臺(tái)要求進(jìn)行填寫。

    _dnsauth

    記錄值

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

    b0d777f7ccddeae93358d908ed59****

  3. 在阿里云OSS控制臺(tái)的綁定域名面板,單擊驗(yàn)證域名所有權(quán)并綁定

  4. 在域名服務(wù)提供商的DNS解析平臺(tái),參考下表添加CNAME記錄。

    參數(shù)

    說(shuō)明

    示例值

    記錄類型

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

    CNAME

    主機(jī)記錄

    根據(jù)域名前綴填寫主機(jī)記錄。

    • 如果是二級(jí)域名,例如example.com,輸入@

    • 如果是三級(jí)域名,輸入三級(jí)域名的前綴。例如域名為static.example.com,輸入static。

    static

    記錄值

    填寫B(tài)ucket的外網(wǎng)訪問(wèn)域名。Bucket域名的結(jié)構(gòu)為<bucketname>.<endpoint>。關(guān)于不同地域的外網(wǎng)Endpoint,請(qǐng)參見訪問(wèn)域名和數(shù)據(jù)中心

    examplebucket.oss-cn-hangzhou.aliyuncs.com

步驟二:驗(yàn)證自定義域名

綁定自定義域名后,您可以使用nslookupdig命令來(lái)檢查CNAME解析的結(jié)果。如果域名解析結(jié)果顯示為您綁定的Bucket的外網(wǎng)訪問(wèn)域名,則說(shuō)明自定義域名的CNAME解析已生效。

nslookup

將example.com替換為您要查詢的域名,然后執(zhí)行以下命令。

nslookup -type=CNAME example.com

成功返回示例如下。

1.png

dig

將example.com替換為您要查詢的域名,然后執(zhí)行以下命令。

dig CNAME example.com

成功返回示例如下。

2.png

步驟三:使用自定義域名

自定義域名生效后,您可以直接通過(guò)HTTP協(xié)議訪問(wèn)文件。

重要

HTTP協(xié)議無(wú)法確保數(shù)據(jù)在傳輸過(guò)程中的安全性,即數(shù)據(jù)可能存在被第三方截取或篡改的風(fēng)險(xiǎn)。考慮到數(shù)據(jù)安全的重要性,強(qiáng)烈推薦您采用HTTPS協(xié)議進(jìn)行訪問(wèn)。具體操作,請(qǐng)參見使用HTTPS協(xié)議

  1. 上傳文件。

    具體操作,請(qǐng)參見簡(jiǎn)單上傳

  2. 獲取文件URL。

    臨時(shí)文件URL

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

    1. 設(shè)置文件讀寫權(quán)限ACL為私有。

      具體操作,請(qǐng)參見設(shè)置Object ACL

    2. 私有文件URL的格式為http://YourDomain/ObjectName?簽名參數(shù)。您可以通過(guò)以下方法獲取文件URL并設(shè)置URL的有效時(shí)長(zhǎng)。

    使用OSS控制臺(tái)

    1. 登錄OSS管理控制臺(tái)

    2. 單擊Bucket列表,然后單擊目標(biāo)Bucket名稱。

    3. 在左側(cè)導(dǎo)航欄,選擇文件管理 > 文件列表

    4. 在文件列表頁(yè)面,單擊目標(biāo)文件名稱。

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

      2.png

    使用圖形化管理工具ossbrowser

    ossbrowser支持Object級(jí)別的操作與控制臺(tái)支持的操作類似,請(qǐng)按照ossbrowser界面指引完成獲取簽名URL的操作。關(guān)于如何使用ossbrowser,請(qǐng)參見快速使用ossbrowser

    使用阿里云SDK

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

    2. Java

      // yourEndpoint填寫自定義域名。
      String endpoint = "yourEndpoint";
      
      // 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)先配置環(huán)境變量。
      EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
      
      // 創(chuàng)建ClientBuilderConfiguration實(shí)例,您可以根據(jù)實(shí)際情況修改默認(rèn)參數(shù)。
      ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
      
      // 設(shè)置是否支持CNAME。CNAME用于將自定義域名綁定到目標(biāo)Bucket。
      conf.setSupportCname(true);
      
      // 創(chuàng)建OSSClient實(shí)例。
      OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, conf);
      
      // 關(guān)閉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;
      
      // 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_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', 
        // 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        accessKeyId: process.env.OSS_ACCESS_KEY_ID,
        accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
        cname: true
      });

      Python

      # -*- coding: utf-8 -*-
      import oss2
      from oss2.credentials import EnvironmentVariableCredentialsProvider
      
      # 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)先配置環(huán)境變量。
      auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
      
      # 填寫自定義域名,例如example.com。
      cname = 'http://example.com'
      
      # 填寫B(tài)ucket名稱,并設(shè)置is_cname=True來(lái)開啟CNAME。CNAME是指將自定義域名綁定到存儲(chǔ)空間。
      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。
              endpoint: "example.com",
              // 從STS服務(wù)獲取的臨時(shí)訪問(wèn)密鑰(AccessKey ID和AccessKey Secret)。
              accessKeyId: "yourAccessKeyId",
              accessKeySecret: "yourAccessKeySecret",
              // 從STS服務(wù)獲取的安全令牌(SecurityToken)。
              stsToken: 'yourSecurityToken',
              // 填寫B(tài)ucket名稱,例如examplebucket。
              bucket: "examplebucket",
              cname: true,
            });    
                
          </script>
        </body>
      </html>
      

      .NET

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

      Android

      // yourEndpoint填寫自定義域名。
      String endpoint = "yourEndpoint";
      // 從STS服務(wù)獲取的臨時(shí)訪問(wèn)密鑰(AccessKey ID和AccessKey Secret)。
      String accessKeyId = "yourAccessKeyId";
      String accessKeySecret = "yourAccessKeySecret";
      // 從STS服務(wù)獲取的安全令牌(SecurityToken)。
      String securityToken = "yourSecurityToken";
      
      OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
      // 創(chuàng)建OSSClient實(shí)例。
      OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);

      Go

      package main
      
      import (
          "fmt"
          "github.com/aliyun/aliyun-oss-go-sdk/oss"
          "os"
      )
      func main(){
          // 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)先配置環(huán)境變量。
          provider, err := oss.NewEnvironmentVariableCredentialsProvider()
          if err != nil {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }    
      
          // yourEndpoint填寫B(tài)ucket對(duì)應(yīng)的自定義域名。
          // oss.UseCname(true)用于開啟CNAME。CNAME用于將自定義域名綁定至存儲(chǔ)空間。
          client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider),oss.UseCname(true))
          if err != nil {
              fmt.Println("Error:", err)
              os.Exit(-1)
          }
      
          fmt.Printf("client:%#v\n", client)
      }

      iOS

      // yourEndpoint填寫自定義域名。
      NSString *endpoint = @"yourEndpoint";
      // 從STS服務(wù)獲取的臨時(shí)訪問(wèn)密鑰(AccessKey ID和AccessKey Secret)。
      NSString *accessKeyId = @"yourAccessKeyId";
      NSString *accessKeySecret = @"yourAccessKeySecret";
      // 從STS服務(wù)獲取的安全令牌(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賬號(hào)信息。*/
                  
          /* yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
          std::string Endpoint = "yourEndpoint";
          
          /* 初始化網(wǎng)絡(luò)等資源。*/
          InitializeSdk();
      
          ClientConfiguration conf;
          /* 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
          auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
          OssClient client(Endpoint, credentialsProvider, conf);   
      
          /* 釋放網(wǎng)絡(luò)等資源。*/
          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);
          /* 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_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,將自定義域名綁定到存儲(chǔ)空間上。*/
          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;
          /* 初始化全局變量,在程序生命周期內(nèi)只需要調(diào)用一次。*/
          if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
              return -1;
          }
          /* 初始化內(nèi)存池和options。*/
          aos_pool_create(&p, NULL);
          options = oss_request_options_create(p);
          init_options(options);
          /* 邏輯代碼,此處省略。*/
          /* 釋放內(nèi)存池,相當(dāng)于釋放了請(qǐng)求過(guò)程中各資源分配的內(nèi)存。*/
          aos_pool_destroy(p);
          /* 釋放之前分配的全局資源,在程序生命周期內(nèi)只需要調(diào)用一次。*/
          aos_http_io_deinitialize();
          return 0;
      }

      Ruby

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

      各語(yǔ)言SDK示例,請(qǐng)參見簽名版本1

    使用命令行工具ossutil

    1. 通過(guò)配置文件設(shè)置Bucket和自定義域名的映射關(guān)系。詳情請(qǐng)參見配置ossutil

    2. 通過(guò)sign生成經(jīng)過(guò)簽名的文件URL。詳情請(qǐng)參見sign(生成簽名URL)

    長(zhǎng)期文件URL

    警告

    如需獲取長(zhǎng)期有效的文件URL,即不存在過(guò)期時(shí)間。您需要將讀文件讀寫權(quán)限ACL設(shè)置為公共讀。設(shè)置為公共讀后,文件的互聯(lián)網(wǎng)上任何用戶都可以對(duì)該Object進(jìn)行訪問(wèn),這有可能造成您數(shù)據(jù)的外泄以及費(fèi)用激增,建議您使用臨時(shí)文件URL。

    獲取長(zhǎng)期有效的文件URL的操作步驟如下:

    1. 設(shè)置文件讀寫權(quán)限ACL為公共讀。

      具體操作,請(qǐng)參見設(shè)置Object ACL

    2. 拼接文件URL。

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

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

  3. 在瀏覽器中,訪問(wèn)生成的文件URL。

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

后續(xù)操作

使用HTTPS協(xié)議

HTTPS協(xié)議在HTTP的基礎(chǔ)上整合了SSL/TLS安全協(xié)議層,從而為數(shù)據(jù)傳輸提供了強(qiáng)大的加密保護(hù)。使用HTTPS協(xié)議訪問(wèn)之前,您需要購(gòu)買相應(yīng)的數(shù)字證書并完成證書托管。具體步驟,請(qǐng)參見綁定自定義域名的證書托管

使用CDN加速

如果您希望提升靜態(tài)資源訪問(wèn)的速度和穩(wěn)定性,您可以為OSS開啟CDN加速,然后將自定義域名綁定到CDN加速域名上。具體操作,請(qǐng)參見綁定CDN加速域名

避免盜刷

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

加速跨境傳輸

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

托管靜態(tài)網(wǎng)站

如果您希望將您的靜態(tài)網(wǎng)站托管到OSS,并使用自定義域名訪問(wèn),您需要為存儲(chǔ)空間設(shè)置靜態(tài)網(wǎng)站托管。具體步驟,請(qǐng)參見靜態(tài)網(wǎng)站托管概述

常見問(wèn)題

已有主機(jī)記錄與當(dāng)前添加CNAME記錄生成的主機(jī)記錄相同,暫時(shí)無(wú)法自動(dòng)添加CNAME記錄

當(dāng)已有主機(jī)記錄與當(dāng)前自動(dòng)添加的CNAME記錄相同時(shí),可能有以下幾種情況:

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

  • 重復(fù)記錄:已存在一個(gè)使用相同主機(jī)記錄的記錄,且記錄類型為CNAME記錄。這可能是因?yàn)橄惹耙咽謩?dòng)添加了相同的記錄。

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

  • 如果您希望保留已有的沖突或重復(fù)主機(jī)記錄,您可以重新自定義一個(gè)子域名進(jìn)行綁定。

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

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

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

域名綁定在自己的其他Bucket上

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

NeedVerifyDomainOwnership

你需要驗(yàn)證域名所有權(quán)。具體操作,請(qǐng)參見綁定自定義域名時(shí)返回錯(cuò)誤碼NeedVerifyDomainOwnership,怎么辦?

綁定自定義域名后,還是無(wú)法預(yù)覽文件?

如果綁定自定義域名并且CNAME解析生效后,仍然無(wú)法預(yù)覽文件,請(qǐng)排查以下設(shè)置:

設(shè)置

異常原因

解決方法

OSS

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

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

Content-Disposition被設(shè)置為attachment。瀏覽器檢測(cè)到Content-Disposition: attachment時(shí),會(huì)觸發(fā)下載行為。

將Content-Disposition設(shè)置為inline。具體步驟,請(qǐng)參見管理文件元數(shù)據(jù)

CDN

緩存資源未刷新。

刷新CDN緩存資源。具體步驟,請(qǐng)參見刷新和預(yù)熱資源

瀏覽器

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

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

已經(jīng)正常解析到WAF且有內(nèi)容的域名可以綁定至Bucket嗎?

可以正常綁定。WAF解析和CNAME解析不會(huì)發(fā)生沖突,因?yàn)樗鼈冊(cè)诓煌膶用嫔线M(jìn)行解析和操作。

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

可以繼續(xù)使用。如何獲取之前的文件URL,請(qǐng)參見使用文件URL分享文件

使用自定義域名就是公網(wǎng)訪問(wèn)嗎?

一般是通過(guò)公網(wǎng)訪問(wèn)。公網(wǎng)用戶通常需要以預(yù)覽的方式訪問(wèn)您的OSS文件,因此自定義域名默認(rèn)解析到Bucket的外網(wǎng)訪問(wèn)域名。

如何使用自定義域名訪問(wèn)OSS文件時(shí)是下載行為?

如需實(shí)現(xiàn)使用自定義域名訪問(wèn)OSS文件時(shí)是下載行為,您可以將Content-Disposition設(shè)置為attachment。具體操作,請(qǐng)參見如何配置通過(guò)自定義域名訪問(wèn)OSS文件實(shí)現(xiàn)強(qiáng)制下載?

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

當(dāng)您不再使用自定義域名時(shí),您可以參考以下步驟解綁自定義域名。

  1. 如果開啟了CDN加速,需要先關(guān)閉CDN加速。

    您需要修改CDN加速服務(wù)的源站信息,使加速域名不再指向OSS的Bucket域名。具體操作,請(qǐng)參見配置源站

  2. 解綁自定義域名。

    1. 登錄OSS管理控制臺(tái)

    2. 單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。

    3. 在左側(cè)導(dǎo)航欄,選擇Bucket配置>域名管理

    4. 在域名列表中,單擊目標(biāo)域名右側(cè)的域名綁定配置

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

  3. 刪除域名解析。

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

相關(guān)API

  • 關(guān)于創(chuàng)建域名所有權(quán)驗(yàn)證所需的CnameToken的接口,請(qǐng)參見CreateCnameToken

  • 關(guān)于獲取已創(chuàng)建的CnameToken的接口,請(qǐng)參見GetCnameToken

  • 關(guān)于為某個(gè)Bucket綁定自定義域名的接口,請(qǐng)參見PutCname

  • 關(guān)于查詢某個(gè)Bucket下綁定的所有自定義域名的接口,請(qǐng)參見ListCname

  • 關(guān)于刪除某個(gè)Bucket已綁定的自定義域名的接口,請(qǐng)參見DeleteCname

  • 關(guān)于使用阿里云解析DNS添加TXT解析記錄或CNAME解析記錄的接口,請(qǐng)參見AddDomainRecord - 根據(jù)傳入?yún)?shù)添加解析記錄