本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
文件上傳到OSS后,OSS會使用Bucket的默認域名生成文件訪問地址。當您在瀏覽器中通過默認域名訪問文件時,會觸發強制下載行為。如果您希望在瀏覽器中預覽文件,則需要為Bucket綁定自定義域名,并通過自定義域名訪問Bucket中的文件。對于綁定自定義域名不會影響您對默認域名的使用,您仍然可以繼續使用OSS提供的默認域名。
前提條件
使用場景
文件預覽:通過自定義域名訪問OSS Bucket,避免OSS強制增加下載響應頭,實現在瀏覽器中預覽文件。
訪問.apk或者.ipa的文件:出于安全考慮,通過OSS默認公網域名訪問2023年08月15日后創建的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: true
和Content-Disposition: attachment
)。瀏覽器檢測到Content-Disposition: attachment
時,會觸發強制下載行為。使用OSS提供的域名訪問文件時,觸發下載行為的請求流程如下:
關于使用OSS的默認Bucket域名或傳輸加速域名訪問文件,觸發自動下載的生效時間和生效對象,請參見附錄:強制下載命中的x-oss-ec規則。
訪問自定義域名
您可以在已注冊的域名(例如example.com)上自定義一個子域名(例如static.example.com),并將其綁定至Bucket,然后使用自定義域名訪問文件。此時,OSS不會在返回中強制增加下載響應頭。由于OSS沒有設置Content-Disposition
字段,瀏覽器會默認將其設置為inline
。瀏覽器會直接顯示文件內容,而不是下載文件。使用自定義域名訪問文件,默認預覽行為的請求流程如下:
使用限制
不支持綁定中文域名。
每個域名只能綁定至一個Bucket。
每個Bucket最多可以綁定100個域名。
通過OSS管理控制臺綁定自定義域名時,不允許綁定泛域名(將域名前綴設置為*,從而將主域名的所有子域名都指向Bucket默認域名)。通過CDN加速OSS時,允許綁定泛域名,但該域名不會在OSS管理控制臺顯示。
操作步驟
步驟一:綁定自定義域名
根據域名所屬服務提供商和所屬賬號,參考對應的步驟將域名綁定至OSS Bucket。
如果您不確定域名所屬服務提供商,您可以在域名信息查詢(WHOIS)頁面進行查詢。
如果您不確定域名是否屬于當前阿里云賬號,您可以在云解析DNS控制臺進行查詢。
綁定的自定義域名中涉及的頂級域名必須滿足指定后綴的要求,否則會被視為無效域名,最終導致域名綁定失敗。更多信息,請參見頂級域名分類解析。
綁定當前阿里云賬號注冊的域名
將當前阿里云賬號注冊的域名,綁定至OSS Bucket的操作步驟如下:
登錄OSS管理控制臺。
單擊Bucket 列表,然后單擊目標Bucket名稱。
在左側導航欄,選擇Bucket 配置>域名管理。
在域名管理頁面,單擊綁定域名。
在綁定域名面板,輸入要綁定的域名,例如
static.example.com
,然后單擊確認綁定。添加CNAME記錄,將自定義域名
static.example.com
解析至被綁定的Bucket的默認外網域名。自動添加
開啟自動添加 CNAME 記錄。
開啟后,OSS會在云解析DNS自動添加一條CNAME記錄。示例如下:
手動添加
如果沒有開啟自動添加 CNAME 記錄,您需要在云解析DNS控制臺手動添加一條CNAME記錄,否則綁定的自定義域名不會生效。
登錄云解析DNS控制臺。
在公網DNS解析 > 權威域名解析,單擊目標域名右側的解析設置。
單擊添加記錄,填寫域名解析信息。
參數
說明
示例值
記錄類型
選擇CNAME記錄將域名解析指向另一個域名
CNAME
主機記錄
填寫要綁定的域名的前綴。
static
解析請求來源
解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。
默認
記錄值
填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名。
examplebucket.oss-cn-hangzhou.aliyuncs.com
TTL
域名的更新周期,保留默認值即可。
說明生效TTL的時間有一定的延遲,請以實際為準。
10分鐘
單擊確定。
完成后,云解析DNS會出現一條CNAME記錄。示例如下:
綁定其他阿里云賬號注冊的域名
將阿里云A賬號注冊的域名,綁定至阿里云B賬號的OSS Bucket的操作步驟如下:
使用阿里云B賬號,獲取TXT記錄的主機記錄和記錄值。
登錄OSS管理控制臺。
單擊Bucket 列表,然后單擊目標Bucket名稱。
在左側導航欄,選擇Bucket 配置>域名管理。
在域名管理頁面,單擊綁定域名。
在綁定域名面板,輸入要綁定的阿里云A賬號的自定義域名,例如
static.example.com
,然后復制頁面顯示的主機記錄和記錄值。
使用阿里云A賬號,添加TXT記錄。
登錄云解析DNS控制臺。
在域名解析列表中,單擊目標域名右側的解析設置。
單擊添加記錄,填寫域名解析信息。
參數
說明
示例值
記錄類型
選擇域名指向的類型為TXT。
TXT
主機記錄
阿里云云解析DNS已自動幫你填寫了主域名。因此,填寫時,不需要手動填寫主域名部分。
如果綁定的是主域名,填寫
_dnsauth
。例如域名為example.com
,填寫_dnsauth
。如果綁定的是子域名,填寫
_dnsauth.<域名前綴>
。例如域名為static.example.com
,填寫_dnsauth.static
。
_dnsauth.static
解析請求來源
解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。
默認
記錄值
填寫使用阿里云B賬號獲取的TXT記錄中的CnameToken。
b0d777f7ccddeae93358d908ed59****
TTL
域名的更新周期,保留默認值即可。
說明生效TTL的時間有一定的延遲,請以實際為準。
10分鐘
單擊確定。
使用阿里云B賬號,在OSS控制臺的綁定域名面板,單擊驗證域名所有權并綁定。
使用阿里云A賬號,添加CNAME記錄。
在域名解析列表中,單擊目標域名右側的解析設置。
單擊添加記錄,填寫域名解析信息。
參數
說明
示例值
記錄類型
選擇域名指向的類型為CNAME。
CNAME
主機記錄
根據域名前綴填寫主機記錄。
如果是主域名,例如
example.com
,輸入@。如果是子域名,輸入域名的前綴。例如域名為
static.example.com
,輸入static。
static
解析請求來源
解析域名時使用的線路。 建議選擇默認,系統將自動選擇最佳線路。
默認
記錄值
填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名。
examplebucket.oss-cn-hangzhou.aliyuncs.com
TTL
域名的更新周期,保留默認值即可。
說明生效TTL的時間有一定的延遲,請以實際為準。
10分鐘
單擊確定。
綁定非阿里云賬號注冊的域名
將在其他域名服務提供商注冊的域名,綁定至OSS Bucket的操作步驟如下:
在阿里云OSS,生成TXT記錄的主機記錄和記錄值。
登錄OSS管理控制臺。
單擊Bucket 列表,然后單擊目標Bucket名稱。
在左側導航欄,選擇Bucket 配置>域名管理。
在域名管理頁面,單擊綁定域名。
在綁定域名面板,輸入在其他域名服務提供商注冊的域名,例如
static.example.com
,然后復制頁面顯示的主機記錄和記錄值。
在域名服務提供商的DNS解析平臺,參考下表添加TXT記錄。
參數
說明
示例值
記錄類型
選擇域名指向的類型為TXT。
TXT
主機記錄
如果其他域名服務提供商的DNS解析平臺已自動幫你填寫了主域名,填寫時,不需要手動填寫主域名部分。
如果綁定的是主域名,填寫
_dnsauth
。例如域名為example.com
,填寫_dnsauth
。如果綁定的是子域名,填寫
_dnsauth.<域名前綴>
。例如域名為static.example.com
,填寫_dnsauth.static
。
_dnsauth.static
記錄值
填寫從阿里云OSS獲取的TXT記錄中的CnameToken。
b0d777f7ccddeae93358d908ed59****
在阿里云OSS控制臺的綁定域名面板,單擊驗證域名所有權并綁定。
在域名服務提供商的DNS解析平臺,參考下表添加CNAME記錄。
參數
說明
示例值
記錄類型
選擇域名指向的類型為CNAME。
CNAME
主機記錄
根據域名前綴填寫主機記錄。
如果是主域名,例如
example.com
,輸入@。如果是子域名,輸入域名前綴。例如域名為
static.example.com
,輸入static。
static
記錄值
填寫Bucket的外網訪問域名。Bucket域名的結構為<bucketname>.<endpoint>。關于不同地域的外網Endpoint,請參見OSS地域和訪問域名。
examplebucket.oss-cn-hangzhou.aliyuncs.com
步驟二:驗證自定義域名
綁定自定義域名后,您可以使用nslookup
或dig
命令來驗證自定義域名解析是否生效。如果域名解析結果顯示為您綁定的Bucket的外網訪問域名,則說明自定義域名的CNAME解析已生效。
nslookup
將static.example.com
替換為您要查詢的域名,然后執行以下命令。
nslookup -type=CNAME static.example.com
成功返回示例如下。
dig
將static.example.com
替換為您要查詢的域名,然后執行以下命令。
dig CNAME static.example.com
成功返回示例如下。
步驟三:使用自定義域名
自定義域名生效后,您可以直接通過HTTP協議訪問文件。
HTTP協議無法確保數據在傳輸過程中的安全性,即數據可能存在被第三方截取或篡改的風險。考慮到數據安全的重要性,強烈推薦您采用HTTPS協議進行訪問。具體操作,請參見使用HTTPS協議。
上傳文件。
具體操作,請參見簡單上傳。
獲取文件URL。
臨時文件URL
獲取臨時有效的文件URL的操作步驟如下:
設置文件讀寫權限ACL為私有。
具體操作,請參見設置Object ACL。
私有文件URL的格式為
http://YourDomain/ObjectName?簽名參數
。您可以通過以下方法獲取文件URL并設置URL的有效時長。
使用OSS控制臺
登錄OSS管理控制臺。
單擊Bucket列表,然后單擊目標Bucket名稱。
在左側導航欄,選擇
。在文件列表頁面,單擊目標文件名稱。
在詳情面板的自有域名,選擇綁定的自定義域名,其他保持默認值,然后單擊復制文件URL。
使用圖形化管理工具ossbrowser
ossbrowser支持Object級別的操作與控制臺支持的操作類似,請按照ossbrowser界面指引完成獲取簽名URL的操作。
如何下載并使用ossbrowser,請參見圖形化管理工具ossbrowser 2.0(預覽版)。
使用阿里云SDK
使用自定義域名新建OssClient。
使用OssClient調用generatePresignedUrl接口獲取簽名URL。
各語言SDK示例,請參見簽名版本1。
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_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', // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_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 ID和AccessKey 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_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"; // 創建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 ID和AccessKey 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 ID和AccessKey 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_ID和OSS_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_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,將自定義域名綁定到存儲空間上。*/ 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_ID和OSS_ACCESS_KEY_SECRET。 access_key_id: ENV['OSS_ACCESS_KEY_ID'], access_key_secret: ENV['OSS_ACCESS_KEY_SECRET'] cname: true) )
使用命令行工具ossutil
通過配置文件設置Bucket和自定義域名的映射關系。詳情請參見配置ossutil。
通過sign生成經過簽名的文件URL。詳情請參見sign(生成簽名URL)。
長期文件URL
警告如需獲取長期有效的文件URL,即不存在過期時間。您需要將讀文件讀寫權限ACL設置為公共讀。設置為公共讀后,文件的互聯網上任何用戶都可以對該Object進行訪問,這有可能造成您數據的外泄以及費用激增,建議您使用臨時文件URL。
獲取長期有效的文件URL的操作步驟如下:
設置文件讀寫權限ACL為公共讀。
具體操作,請參見設置Object ACL。
拼接文件URL。
綁定自定義域名后,如果文件讀寫權限ACL為公共讀,則無需進行簽名操作。公共讀文件URL的格式為
http://YourDomainName/ObjectName
。例如,您為華東1(杭州)地域的examplebucket綁定了自定義域名static.example.com,且該Bucket下包含example.jpg的文件,則該文件URL為
http://static.example.com/example.jpg
。
在瀏覽器中,訪問生成的文件URL。
后續操作
使用HTTPS協議
HTTPS協議在HTTP的基礎上整合了SSL/TLS安全協議層,從而為數據傳輸提供了強大的加密保護。使用HTTPS協議訪問之前,您需要購買相應的數字證書并完成證書托管。具體步驟,請參見綁定自定義域名的證書托管。
使用CDN加速
如果您希望提升靜態資源訪問的速度和穩定性,您可以為OSS開啟CDN加速,然后將自定義域名綁定到CDN加速域名上。具體操作,請參見綁定CDN加速域名。
避免盜刷
如果您希望避免Bucket內的資源被其他人盜用,您可以通過設置Referer列表(包括白名單Referer和黑名單Referer)以及是否允許空Referer的方式,限制您Bucket內資源的訪問來源。具體步驟,請參見防盜鏈。
加速跨境傳輸
如果您希望提升跨境訪問的速度和穩定性,您可以將自定義域名綁定到OSS傳輸加速域名上。具體操作,請參見綁定CDN加速域名。
托管靜態網站
如果您希望將您的靜態網站托管到OSS,并使用自定義域名訪問,您需要為存儲空間設置靜態網站托管。具體步驟,請參見靜態網站托管。
常見問題
備案時不支持選擇OSS作為云服務怎么辦
對于直接使用阿里云OSS托管靜態網站的用戶,由于OSS服務不支持備案,您可以采取以下步驟來滿足備案要求:
購買用于備案服務器:建議您購買一臺最低配置、時長至少3個月的ECS實例,例如ECS 99套餐,以滿足備案條件。
進行備案:使用該ECS實例進行相應的備案操作。
使用備案后的域名:備案成功后,您可以將域名指向阿里云OSS,實現靜態網站的托管。
已有主機記錄與當前添加CNAME記錄生成的主機記錄相同,暫時無法自動添加CNAME記錄
當已有主機記錄與當前自動添加的CNAME記錄相同時,可能有以下幾種情況:
沖突記錄:已存在一個使用相同主機記錄的記錄,但記錄類型可能與CNAME不同。例如,可能已經存在一個A記錄。
重復記錄:已存在一個使用相同主機記錄的記錄,且記錄類型為CNAME記錄。這可能是因為先前已手動添加了相同的記錄。
在這種情況下,您可以在阿里云云解析DNS控制臺根據您的需求來決定如何處理:
如果您希望保留已有的沖突或重復主機記錄,您可以重新自定義一個子域名進行綁定。
如果您不希望保留已有的主機記錄:
如果是沖突記錄,您可以刪除該記錄,然后創建CNAME記錄解析至Bucket域名。
如果是重復記錄,您可以修改記錄,將其解析至Bucket域名。
域名綁定在自己的其他Bucket上
您需要解除Bucket綁定的域名,然后重新綁定到當前Bucket上。具體操作,請參見OSS的域名管理中綁定域名時提示“域名綁定在自己的其他Bucket上”。
NeedVerifyDomainOwnership
你需要驗證域名所有權。具體操作,請參見綁定自定義域名時返回錯誤碼NeedVerifyDomainOwnership,怎么辦?。
綁定自定義域名后,還是無法預覽文件?
如果綁定自定義域名并且CNAME解析生效后,仍然無法預覽文件,請排查以下設置:
設置 | 異常原因 | 解決方法 |
OSS |
| 根據文件類型,設置合理的Content-Type。具體操作,請參見如何設置Content-Type(MIME)?。 |
| 將Content-Disposition設置為 | |
CDN | 緩存資源未刷新。 | 刷新CDN緩存資源。具體步驟,請參見刷新和預熱資源。 |
瀏覽器 | 不支持預覽該格式的文件,例如表格文件、文本文件、演示文件以及PDF文件。 | 您可以為瀏覽器安裝插件以支持預覽該格式的文件。或者,您也可以使用智能媒體管理IMM的文檔在線預覽處理。具體步驟,請參見文檔在線預覽。 |
已經正常解析到WAF且有內容的域名可以綁定至Bucket嗎?
可以正常綁定。WAF解析和CNAME解析不會發生沖突,因為它們在不同的層面上進行解析和操作。
綁定自定義域名后,之前的文件URL是否可以繼續使用?
可以繼續使用。如何獲取之前的文件URL,請參見使用文件URL分享文件。
使用自定義域名就是公網訪問嗎?
一般是通過公網訪問。公網用戶通常需要以預覽的方式訪問您的OSS文件,因此自定義域名默認解析到Bucket的外網訪問域名。
如何使用自定義域名訪問OSS文件時是下載行為?
如需實現使用自定義域名訪問OSS文件時是下載行為,您可以將Content-Disposition
設置為attachment。具體操作,請參見如何配置通過自定義域名訪問OSS文件實現強制下載?。
相關API
關于創建域名所有權驗證所需的CnameToken的接口,請參見CreateCnameToken。
關于獲取已創建的CnameToken的接口,請參見GetCnameToken。
關于為某個Bucket綁定自定義域名的接口,請參見PutCname。
關于查詢某個Bucket下綁定的所有自定義域名的接口,請參見ListCname。
關于刪除某個Bucket已綁定的自定義域名的接口,請參見DeleteCname。
關于使用阿里云解析DNS添加TXT解析記錄或CNAME解析記錄的接口,請參見AddDomainRecord - 根據傳入參數添加解析記錄。