借助阿里云在亚洲加速迈向成功
一站式安全合规咨询服务
MLPS 2.0 一站式合规解决方案
依托我们的网络进军中国市场
提升面向互联网应用的性能和安全性
保障您的中国业务安全无忧
通过强大的数据安全框架保护您的数据资产
申请 ICP 备案的流程解读和咨询服务
面向大数据建设、管理及应用的全域解决方案
企业内大数据建设、管理和应用的一站式解决方案
将您的采购和销售置于同一企业级全渠道数字平台上
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
快速搭建在线教育平台
提供域名注册、分析和保护服务
云原生 Kubernetes 容器化应用运行环境
以 Kubernetes 为使用界面的容器服务产品,提供符合容器规范的算力资源
安全的镜像托管服务,支持全生命周期管理
多集群环境下微服务应用流量统一管理
提供任意基础设施上容器集群的统一管控,助您轻松管控分布式云场景
高弹性、高可靠的企业级无服务器 Kubernetes 容器产品
敏捷安全的 Serverless 容器运行服务
为虚拟机和容器提供高可靠性、高性能、低时延的块存储服务
一款海量、安全、低成本、高可靠的云存储服务
可靠、弹性、高性能、多共享的文件存储服务
全托管、可扩展的并行文件系统服务。
全托管的 NoSQL 结构化数据实时存储服务
可抵扣多种存储产品的容量包,兼具灵活性和长期成本优化
让您的应用跨不同可用区资源自动分配访问量
随时绑定和解绑 VPC ECS
云网络公网、跨域流量统一计费
高性价比,可抵扣按流量计费的流量费用
创建云上隔离的网络,在专有环境中运行资源
在 VPC 环境下构建公网流量的出入口
具备网络状态可视化、故障智能诊断能力的自助式网络运维服务。
安全便捷的云上服务专属连接
基于阿里云专有网络的私有 DNS 解析服务
保障在线业务不受大流量 DDoS 攻击影响
系统运维和安全审计管控平台
业务上云的第一个网络安全基础设施
集零信任内网访问、办公数据保护、终端管理等多功能于一体的办公安全管控平台
提供全面统一的云原生防护平台(CNAPP)能力
防御常见 Web 攻击,缓解 HTTP 泛洪攻击
实现全站 HTTPS,呈现可信的 WEB 访问
为云上应用提供符合行业标准和密码算法等级的数据加解密、签名验签和数据认证能力
一款发现、分类和保护敏感数据的安全服务
创建、控制和管理您的加密密钥
快速提高应用高可用能力服务
围绕应用和微服务的 PaaS 平台
兼容主流开源微服务生态的一站式平台
多集群环境下微服务应用流量统一管理
Super MySQL 和 PostgreSQL,高度兼容 Oracle 语法
全托管 MySQL、PostgreSQL、SQL Server、MariaDB
兼容 Redis® 的缓存和KV数据库
兼容Apache Cassandra、Apache HBase、Elasticsearch、OpenTSDB 等多种开源接口
文档型数据库,支持副本集和分片架构
100%兼容 Apache HBase 并深度扩展,稳定、易用、低成本的NoSQL数据库。
低成本、高可用、可弹性伸缩的在线时序数据库服务
专为搜索和分析而设计,成本效益达到开源的两倍,采用最新的企业级AI搜索和AI助手功能。
一款兼容PostgreSQL协议的实时交互式分析产品
一种快速、完全托管的 TB/PB 级数据仓库
基于 Flink 为大数据行业提供解决方案
基于Qwen和其他热门模型的一站式生成式AI平台,可构建了解您业务的智能应用程
一站式机器学习平台,满足数据挖掘分析需求
高性能向量检索服务,提供低代码API和高成本效益
帮助您的应用快速构建高质量的个性化推荐服务能力
提供定制化的高品质机器翻译服务
全面的AI计算平台,满足大模型训练等高性能AI计算的算力和性能需求
具备智能会话能力的会话机器人
基于机器学习的智能图像搜索产品
基于阿里云深度学习技术,为用户提供图像分割、视频分割、文字识别等离线SDK能力,支持Android、iOS不同的适用终端。
语音识别、语音合成服务以及自学习平台
一站式智能搜索业务开发平台
助力金融企业快速搭建超低时延、高质量、稳定的行情数据服务
帮助企业快速测算和分析企业的碳排放和产品碳足迹
企业工作流程自动化,全面提高效率
金融级云原生分布式架构的一站式高可用应用研发、运维平台
eKYC 数字远程在线解决方案
可智能检测、大数据驱动的综合性反洗钱 (AML) 解决方案
阿里云APM类监控产品
实时云监控服务,确保应用及服务器平稳运行
为系统运维人员管理云基础架构提供全方位服务的云上自动化运维平台
面向您的云资源的风险检测服务
提升分布式环境下的诊断效率
日志类数据一站式服务,无需开发就能部署
ECS 预留实例
让弹性计算产品的成本和灵活性达到最佳平衡的付费方式。云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势自带IP上云
自带公网 IP 地址上云全球网络互联
端到端的软件定义网络解决方案,可推动跨国企业的业务发展全球应用加速
提升面向互联网应用的性能和安全性全球互联网接入
将IDC网关迁移到云端云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势金融科技云数据库解决方案
利用专为金融科技而设的云原生数据库解决方案游戏行业云数据库解决方案
提供多种成熟架构,解决所有数据问题Oracle 数据库迁移
将 Oracle 数据库顺利迁移到云原生数据库数据库迁移
加速迁移您的数据到阿里云阿里云上的数据湖
实时存储、管理和分析各种规模和类型的数据数码信贷
利用大数据和 AI 降低信贷和黑灰产风险面向企业数据技术的大数据咨询服务
帮助企业实现数据现代化并规划其数字化未来人工智能对话服务
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人EasyDispatch 现场服务管理
为现场服务调度提供实时AI决策支持在线教育
快速搭建在线教育平台窄带高清 (HD) 转码
带宽成本降低高达 30%广电级大型赛事直播
为全球观众实时直播大型赛事,视频播放流畅不卡顿直播电商
快速轻松地搭建一站式直播购物平台用于供应链规划的Alibaba Dchain
构建和管理敏捷、智能且经济高效的供应链云胸牌
针对赛事运营的创新型凭证数字服务数字门店中的云 POS 解决方案
将所有操作整合到一个云 POS 系统中元宇宙
元宇宙是下一代互联网人工智能 (AI) 加速
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速DevOps
快速、安全地最大限度提高您的DevOps优势数据迁移解决方案
加速迁移您的数据到阿里云企业 IT 治理
在阿里云上构建高效可控的云环境基于日志管理的AIOps
登录到带有智能化日志管理解决方案的 AIOps 环境备份与存档
数据备份、数据存档和灾难恢复用阿里云金融服务加快创新
在云端开展业务,提升客户满意度
为全球资本市场提供安全、准确和数字化的客户体验
利用专为金融科技而设的云原生数据库解决方案
利用大数据和 AI 降低信贷和黑灰产风险
建立快速、安全的全球外汇交易平台
新零售时代下,实现传统零售业转型
利用云服务处理流量波动问题,扩展业务运营、降低成本
快速轻松地搭建一站式直播购物平台
面向大数据建设、管理及应用的全域解决方案
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
以数字化媒体旅程为当今的媒体市场准备就绪您的内容
带宽成本降低高达 30%
快速轻松地搭建一站式直播购物平台
为全球观众实时直播大型赛事,视频播放流畅不卡顿
使用阿里云弹性高性能计算 E-HPC 将本地渲染农场连接到云端
构建发现服务,帮助客户找到最合适的内容
保护您的媒体存档安全
通过统一的数据驱动平台提供一致的全生命周期客户服务
在钉钉上打造一个多功能的电信和数字生活平台
在线存储、共享和管理照片与文件
提供全渠道的无缝客户体验
面向中小型企业,为独立软件供应商提供可靠的IT服务
打造最快途径,助力您的新云业务扬帆起航
先进的SD-WAN平台,可实现WAN连接、实时优化并降低WAN成本
通过自动化和流程标准化实现快速事件响应
针对关键网络安全威胁提供集中可见性并进行智能安全分析
提供大容量、可靠且高度安全的企业文件传输
用智能技术数字化体育赛事
基于人工智能的低成本体育广播服务
专业的广播转码及信号分配管理服务
基于云的音视频内容引入、编辑和分发服务
在虚拟场馆中模拟关键运营任务
针对赛事运营的创新型凭证数字服务
智能和交互式赛事指南
轻松管理云端背包单元的绑定直播流
通过数据加强您的营销工作
元宇宙是下一代互联网
利用生成式 AI 加速创新,创造新的业务佳绩
阿里云高性能开源大模型
借助AI轻松解锁和提炼文档中的知识
基于生成式AI的一体化平台,助您在同一个工作空间内高效创作多样化内容
通过AI驱动的语音转文本服务获取洞察
探索阿里云人工智能和数据智能的所有功能、新优惠和最新产品
该体验中心提供广泛的用例和产品帮助文档,助您开始使用阿里云 AI 产品和浏览您的业务数据。
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速
元宇宙是下一代互联网
构建发现服务,帮助客户找到最合适的内容
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
加速迁移您的数据到阿里云
在阿里云上建立一个安全且易扩容的环境,助力高效率且高成本效益的上云旅程
迁移到完全托管的云数据库
将 Oracle 数据库顺利迁移到云原生数据库
自带公网 IP 地址上云
利用阿里云强大的安全工具集,保障业务安全、应用程序安全、数据安全、基础设施安全和帐户安全
保护、备份和还原您的云端数据资产
MLPS 2.0 一站式合规解决方案
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
实现对 CloudOps、DevOps、SecOps、AIOps 和 FinOps 的高效、安全和透明的管理
构建您的原生云环境并高效管理集群
快速、安全地最大限度提高您的DevOps优势
实施细粒度安全控制
提供运维效率和总体系统安全性
实时分析您的云消耗并实现节约
实时存储、管理和分析各种规模和类型的数据
登录到带有智能化日志管理解决方案的 AIOps 环境
帮助企业实现数据现代化并规划其数字化未来
帮助零售商快速规划数字化之旅
将全球知名的 CRM 平台引入中国
在线存储、共享和管理照片与文件
构建、部署和管理高可用、高可靠、高弹性的应用程序
快速、安全地最大限度提高您的DevOps优势
将您的采购和销售置于同一企业级全渠道数字平台上
企业内大数据建设、管理和应用的一站式解决方案
帮助企业简化 IT 架构、实现商业价值、加速数字化转型的步伐
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
快速搜集、处理、分析联网设备产生的数据
0.0.201
本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
出于安全考虑,当您通过Bucket默认域名访问某些文件时,可能会触发强制下载或禁止下载。如果您希望在浏览器中正常预览或下载这些文件,您需要为Bucket绑定自定义域名,并通过自定义域名访问OSS文件。绑定自定义域名不会影响Bucket默认域名,您可以继续通过Bucket默认域名访问OSS文件。
预览文件:出于安全考虑,通过OSS默认Bucket域名访问文件时,OSS会强制增加下载响应头,导致浏览器强制下载文件。使用自定义域名访问文件不会强制增加下载响应头,从而实现在浏览器中预览文件。关于使用OSS的默认Bucket域名访问文件,触发自动下载的生效时间和生效对象,请参见附录:强制下载命中的x-oss-ec规则。
访问.apk或.ipa文件:出于安全考虑,通过OSS默认Bucket域名访问.apk或.ipa文件时,OSS会返回400错误,错误码为ApkDownloadForbidden。使用自定义域名访问.apk或.ipa文件不会被阻断。关于使用OSS默认Bucket域名访问后缀为.apk或者.ipa文件,触发禁止访问的生效时间和生效对象,请参见附录:报错ApkDownloadForbidden。
品牌形象和专业性:将自定义域名绑定到OSS Bucket,提供个性化域名,增强品牌形象和专业性,增加用户信任度。
防止域名被拦截:一些应用或平台可能会对Bucket默认域名进行拦截。您可以为Bucket绑定自定义域名,以确保您的OSS Bucket中的资源能够被正常访问。
访问方便性:使用自定义域名访问OSS Bucket,方便易记,相比使用OSS默认域名,更加简洁友好,轻松访问和分享资源。
链接的持久性:绑定自定义域名到OSS Bucket后,即使后续存储位置或服务有变化,用户仍可使用相同域名访问资源,确保链接的持久性,长期可访问和使用存储资源。
不支持绑定中文域名。
域名未在图片处理绑定。
每个域名只能绑定至一个Bucket。
每个Bucket最多可以绑定100个域名。
通过OSS管理控制台绑定自定义域名时,不允许绑定泛域名(将域名前缀设置为*,从而将主域名的所有子域名都指向Bucket默认域名)。通过CDN加速OSS时,允许绑定泛域名,但该域名不会在OSS管理控制台显示。
已创建Bucket。具体步骤,请参见创建存储空间。
已注册域名。支持绑定非阿里云注册的域名。如果您还未注册域名,您可以在阿里云域名服务平台注册域名。具体步骤,请参见注册域名。
如果要绑定的Bucket在中国内地,确保域名已备案,且账号已实名认证。如何备案和实名认证,请参见ICP备案流程、阿里云账号实名登记常见问题。
根据域名所属服务提供商(可在域名信息查询(WHOIS)页面查询)和所属账号(可在云解析DNS控制台查询),参考对应的步骤将域名绑定至OSS Bucket。
将当前阿里云账号注册的域名,绑定至OSS Bucket的操作步骤如下:
登录OSS管理控制台。
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择Bucket 配置>域名管理。
在域名管理页面,单击绑定域名。
在绑定域名面板,输入不带协议的自定义域名,例如static.example.com
,然后单击确认绑定。
自定义域名示例
场景 | 域名示例 | 描述 |
静态网站托管 |
| 使用主域名,用户可以通过主域名访问托管在 OSS 上的完整网站内容。 |
静态资源服务 |
| 使用子域名,用于集中管理和提供网站的静态资源(如图片、样式表和脚本等)。 |
图片服务 |
| 使用子域名,为网站或移动应用提供图片资源。 |
视频存储和播放 |
| 使用子域名,以存储和快速访问视频内容。 |
文件共享和下载 |
| 使用子域名,提供便捷的文件下载服务。 |
备份和日志存储 |
| 使用子域名,用于存储备份数据或日志文件,简化数据管理流程。 |
API 文档托管 |
| 使用子域名,用于展示 API 文档,方便开发者进行访问。 |
添加CNAME记录,将自定义域名static.example.com
解析至被绑定的Bucket的默认外网域名。
在绑定域名面板,开启自动添加 CNAME 记录。
开启后,云解析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
,然后复制页面显示的主机记录和记录值。
自定义域名示例
场景 | 域名示例 | 描述 |
静态网站托管 |
| 使用主域名,用户可以通过主域名访问托管在 OSS 上的完整网站内容。 |
静态资源服务 |
| 使用子域名,用于集中管理和提供网站的静态资源(如图片、样式表和脚本等)。 |
图片服务 |
| 使用子域名,为网站或移动应用提供图片资源。 |
视频存储和播放 |
| 使用子域名,以存储和快速访问视频内容。 |
文件共享和下载 |
| 使用子域名,提供便捷的文件下载服务。 |
备份和日志存储 |
| 使用子域名,用于存储备份数据或日志文件,简化数据管理流程。 |
API 文档托管 |
| 使用子域名,用于展示 API 文档,方便开发者进行访问。 |
使用阿里云A账号,添加TXT记录。
登录云解析DNS控制台。
在域名解析列表中,单击目标域名右侧的解析设置。
单击添加记录,填写域名解析信息。
参数 | 说明 | 示例值 |
记录类型 | 选择域名指向的类型为TXT。 | TXT |
主机记录 | 阿里云云解析DNS已自动帮你填写了主域名。因此,填写时,不需要手动填写主域名部分。
| _dnsauth.static |
解析请求来源 | 解析域名时使用的线路。 建议选择默认,系统将自动选择最佳线路。 | 默认 |
记录值 | 填写使用阿里云B账号获取的TXT记录中的CnameToken。 | b0d777f7ccddeae93358d908ed59**** |
TTL | 域名的更新周期,保留默认值即可。 说明 生效TTL的时间有一定的延迟,请以实际为准。 | 10分钟 |
单击确定。
使用阿里云B账号,在OSS控制台的绑定域名面板,单击验证域名所有权并绑定。
使用阿里云A账号,添加CNAME记录。
在域名解析列表中,单击目标域名右侧的解析设置。
单击添加记录,填写域名解析信息。
参数 | 说明 | 示例值 |
记录类型 | 选择域名指向的类型为CNAME。 | CNAME |
主机记录 | 根据域名前缀填写主机记录。
| 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
,然后复制页面显示的主机记录和记录值。
自定义域名示例
场景 | 域名示例 | 描述 |
静态网站托管 |
| 使用主域名,用户可以通过主域名访问托管在 OSS 上的完整网站内容。 |
静态资源服务 |
| 使用子域名,用于集中管理和提供网站的静态资源(如图片、样式表和脚本等)。 |
图片服务 |
| 使用子域名,为网站或移动应用提供图片资源。 |
视频存储和播放 |
| 使用子域名,以存储和快速访问视频内容。 |
文件共享和下载 |
| 使用子域名,提供便捷的文件下载服务。 |
备份和日志存储 |
| 使用子域名,用于存储备份数据或日志文件,简化数据管理流程。 |
API 文档托管 |
| 使用子域名,用于展示 API 文档,方便开发者进行访问。 |
在域名服务提供商的DNS解析平台,参考下表添加TXT记录。
参数 | 说明 | 示例值 |
记录类型 | 选择域名指向的类型为TXT。 | TXT |
主机记录 | 如果其他域名服务提供商的DNS解析平台已自动帮你填写了主域名,填写时,不需要手动填写主域名部分。
| _dnsauth.static |
记录值 | 填写从阿里云OSS获取的TXT记录中的CnameToken。 | b0d777f7ccddeae93358d908ed59**** |
在阿里云OSS控制台的绑定域名面板,单击验证域名所有权并绑定。
在域名服务提供商的DNS解析平台,参考下表添加CNAME记录。
参数 | 说明 | 示例值 |
记录类型 | 选择域名指向的类型为CNAME。 | CNAME |
主机记录 | 根据域名前缀填写主机记录。
| static |
记录值 | 填写Bucket的外网访问域名。Bucket域名的结构为<bucketname>.<endpoint>。关于不同地域的外网Endpoint,请参见OSS地域和访问域名。 | examplebucket.oss-cn-hangzhou.aliyuncs.com |
绑定自定义域名后,当用户通过自定义域名发起请求时,该请求会通过 DNS 解析到 Bucket 默认域名。您可以使用nslookup
或dig
命令来验证自定义域名解析是否生效。
将static.example.com
替换为您要查询的域名,然后执行以下命令。
nslookup -type=CNAME static.example.com
域名解析结果显示绑定的Bucket的外网访问域名,说明自定义域名解析已生效。
将static.example.com
替换为您要查询的域名,然后执行以下命令。
dig CNAME static.example.com
域名解析结果显示绑定的Bucket的外网访问域名,说明自定义域名解析已生效。
自定义域名解析生效后,您可以使用HTTP协议和自定义域名构造包含签名和有效期的URL,URL的格式为http://YourDomain/ObjectName?签名参数
,然后使用该URL访问OSS文件。
获取预签名URL。
登录OSS管理控制台。
单击Bucket列表,然后单击目标Bucket名称。
在左侧导航栏,选择文件管理 > 文件列表。
在文件列表页面,单击目标文件名称。
在详情面板的自有域名,选择绑定的自定义域名,其他保持默认值,然后单击复制文件URL。
ossbrowser支持Object级别的操作与控制台支持的操作类似,请按照ossbrowser界面指引完成获取预签名URL的操作。如何下载ossbrowser,请参见图形化管理工具ossbrowser 2.0(预览版)。
使用自定义域名登录ossbrowser。
获取文件URL。
使用自定义域名新建OssClient并生成预签名URL。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import java.net.URL;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws Throwable {
// yourEndpoint请填写您的自定义域名。例如http://static.example.com。
String endpoint = "http://static.example.com";
// Endpoint请填写您对应的Region信息,例如cn-hangzhou。
String region = "cn-hangzhou";
// 从环境变量中获取访问凭证。运行本代码示例之前,请先配置环境变量。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// 创建OSSClient实例。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// 请注意,设置true开启CNAME选项。
clientBuilderConfiguration.setSupportCname(true);
// 显式声明使用 V4 签名算法
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// 设置预签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
// 生成以GET方法访问的预签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
String bucketName = "examplebucket";
String objectName = "demo.png";
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
System.out.println(url);
} 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 (ClientException 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 {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填写Endpoint对应的Region信息,例如cn-hangzhou。注意,v4签名下,必须填写该参数
region = "cn-hangzhou"
# 填写自定义域名,例如static.example.com。
endpoint = 'http://static.example.com'
# yourBucketName填写存储空间名称。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region, is_cname=True)
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
# 生成下载文件的预签名URL,有效时间为600秒。
# 生成预签名URL时,OSS默认会对Object完整路径中的正斜线(/)进行转义,从而导致生成的预签名URL无法直接使用。
# 设置slash_safe为True,OSS不会对Object完整路径中的正斜线(/)进行转义,此时生成的预签名URL可以直接使用。
url = bucket.sign_url('GET', object_name, 600, slash_safe=True, params=params)
print('预签名URL的地址为:', url)
const OSS = require("ali-oss");
// 定义一个生成预签名 URL 的函数
async function generateSignatureUrl(fileName) {
// 获取预签名URL
const client = await new OSS({
// 使用自定义域名作为Endpoint。
endpoint: 'http://static.example.com',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
bucket: 'examplebucket',
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
authorizationV4: true,
cname: true
});
return await client.signatureUrlV4('GET', 3600, {
headers: {} // 请根据实际发送的请求头设置此处的请求头
}, fileName);
}
// 调用函数并传入文件名
generateSignatureUrl('yourFileName').then(url => {
console.log('Generated Signature URL:', url);
}).catch(err => {
console.error('Error generating signature URL:', err);
});
<?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\OssClient;
use OSS\Core\OssException;
use OSS\Http\RequestCore;
use OSS\Http\ResponseCore;
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为http://static.example.com。
$endpoint = "http://static.example.com";
// 填写Bucket名称。
$bucket= "examplebucket";
// 填写不包含Bucket名称在内的Object完整路径。
$object = "exampleobject.txt";
// 指定预签名URL的过期时间为600s(最长可达32400s)。
$timeout = 600;
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
'signatureVersion'=>OssClient::OSS_SIGNATURE_VERSION_V4,
"cname" => true,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// 生成预签名URL。
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET");
print_r($signedUrl);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// 定义全局变量
var (
region string // 存储区域
bucketName string // 存储空间名称
objectName string // 对象名称
)
// init函数用于初始化命令行参数
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// 解析命令行参数
flag.Parse()
// 检查bucket名称是否为空
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// 检查region是否为空
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 检查object名称是否为空
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// 加载默认配置并设置凭证提供者和区域
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region).
WithEndpoint("http://static.example.com").
WithUseCName(true)
// 创建OSS客户端
client := oss.NewClient(cfg)
// 生成GetObject的预签名URL
result, err := client.Presign(context.TODO(), &oss.GetObjectRequest{
Bucket: oss.Ptr(bucketName),
Key: oss.Ptr(objectName),
//RequestPayer: oss.Ptr("requester"), // 指定请求者身份
},
oss.PresignExpires(10*time.Minute),
)
if err != nil {
log.Fatalf("failed to get object presign %v", err)
}
log.Printf("request method:%v\n", result.Method)
log.Printf("request expiration:%v\n", result.Expiration)
log.Printf("request url:%v\n", result.URL)
if len(result.SignedHeaders) > 0 {
//当返回结果包含预签名头时,使用预签名URL发送GET请求时也包含相应的请求头,以免出现不一致,导致请求失败和预签名错误
log.Printf("signed headers:\n")
for k, v := range result.SignedHeaders {
log.Printf("%v: %v\n", k, v)
}
}
}
使用自定义域名通过presign(生成预预签名URL)命令生成文件的预签名URL。
ossutil presign oss://examplebucket/exampleobject.txt --endpoint "http://static.example.com” --addressing-style "cname"
如需ossutil命令自动使用自定义域名,而无需每次在命令中手动指定自定义域名,您可以在配置文件中添加自定义域名,
在浏览器中访问预签名URL。
关于创建域名所有权验证所需的CnameToken的接口,请参见CreateCnameToken。
关于获取已创建的CnameToken的接口,请参见GetCnameToken。
关于为某个Bucket绑定自定义域名的接口,请参见PutCname。
关于查询某个Bucket下绑定的所有自定义域名的接口,请参见ListCname。
关于删除某个Bucket已绑定的自定义域名的接口,请参见DeleteCname。
关于使用阿里云解析DNS添加TXT解析记录或CNAME解析记录的接口,请参见AddDomainRecord - 根据传入参数添加解析记录。
自定义域名在未配置SSL证书的情况下,默认不支持HTTPS协议访问。通过HTTPS协议访问自定义域名时,浏览器会显示不安全连接警告。为了通过HTTPS协议访问OSS文件,需要为自定义域名配置证书。
如需获取不存在签名和过期时间的URL,即URL的格式为http://YourDomainName/ObjectName
,您需要将文件设置为公共读。设置为公共读后,互联网上任何用户都可以访问该文件,这有可能造成您数据的外泄以及费用激增,建议您使用包含签名和过期时间的URL。
您可以通过以下两种方式将文件设置为公共读:
设置文件为公共读:将 OSS 文件的权限设置为公共读。在这种情况下,文件的 URL 将没有有效期,任何人都可以访问。为了防止文件被其他网站盗用,您需要在 OSS 中配置防盗链。
CDN加速OSS资源:保持 OSS 文件的权限为私有,通过 CDN 提供公共读访问。在这种情况下,文件的 URL 将没有有效期,任何人都可以访问。为了防止文件被其他网站盗用,您需要在 CDN 配置防盗链。
默认情况下,任何网站都可以显示您的OSS文件,这可能导致额外的请求费用和下行流量费用。您可以通过防盗链,设置Referer黑名单或白名单来限制访问来源。配置防盗链后,未授权的网站将无法显示您的OSS文件,同时失败的请求也不会产生请求费用和下行流量费用。
如果您使用OSS作为静态网站的服务器,直接存储和提供静态文件(如HTML、CSS、JavaScript等),以便用户通过互联网访问这些内容,除了绑定自定义域名外,您还需要为Bucket设置静态网站托管。
OSS Bucket 中的文件存储在某个地域(例如杭州)。为了提高不同地域用户下载 OSS 文件的速度,您可以使用CDN加速OSS。开启CDN加速后,OSS 文件会分发到各个地域的 CDN 缓存节点。用户在访问文件时,可以从离他们更近的缓存节点获取内容,从而有效提升下载速度。
在使用 CDN 加速 OSS 的情况下,建议将 CDN 域名用于文件下载,而对于文件上传,您可以继续使用原有的 Bucket 默认域名。
OSS Bucket 中的文件存储在某个地域(例如杭州)。非中国内地的用户访问时,可能因传输距离较远导致上传和下载体验非常差。为提升 OSS 文件的远距离传输速度,您可以开启传输加速,将自定义域名绑定到 OSS 的传输加速域名,而不是Bucket默认域名。
Content-Disposition: inline
,无法预览?为确保数据传输安全,使用OSS的Bucket默认域名(<bucketName>.oss-<regionId>.aliyuncs.com
)或传输加速域名(<bucketName>.oss-accelerate.aliyuncs.com
)访问文件时,OSS会强制增加下载响应头(x-oss-force-download: true
和Content-Disposition: attachment
)。浏览器检测到Content-Disposition: attachment
时,会强制下载。使用OSS域名访问文件时,请求流程如下:
您可以在已注册的域名(例如example.com)上自定义一个子域名(例如static.example.com),并将其绑定至Bucket,然后使用自定义域名访问文件。此时,OSS不会在返回中强制增加下载响应头。由于OSS没有设置 Content-Disposition
字段,浏览器将根据文件的MIME类型自动决定处理方式。对于大多数常见的文件类型,浏览器会直接显示文件内容,而不是进行下载。
对于直接使用阿里云OSS托管静态网站的用户,由于OSS服务不支持备案,您可以采取以下步骤来满足备案要求:
购买用于备案服务器:建议您购买一台最低配置、时长至少3个月的ECS实例,以满足备案条件。
进行备案:使用该ECS实例进行相应的备案操作。
使用备案后的域名:备案成功后,您可以将域名指向阿里云OSS,实现静态网站的托管。
当已有主机记录与当前自动添加的CNAME记录相同时,可能有以下几种情况:
冲突记录:已存在一个使用相同主机记录的记录,但记录类型可能与CNAME不同。例如,可能已经存在一个A记录。
重复记录:已存在一个使用相同主机记录的记录,且记录类型为CNAME记录。这可能是因为先前已手动添加了相同的记录。
在这种情况下,您可以在阿里云云解析DNS控制台根据您的需求来决定如何处理:
如果您希望保留已有的冲突或重复主机记录,您可以重新自定义一个子域名进行绑定。
如果您不希望保留已有的主机记录:
如果是冲突记录,您可以删除该记录,然后创建CNAME记录解析至Bucket域名。
如果是重复记录,您可以修改记录,将其解析至Bucket域名。
域名绑定在其他Bucket上了,有以下两种解决方法:
自定义一个子域名。例如,OSS提示oss.example.com已经被其他Bucket绑定了,您可以自定义一个子域名,例如static.example.com,然后绑定这个新的子域名。
重新绑定。例如,OSS提示oss.example.com已经被其他Bucket绑定了,您需要解除绑定了这个域名的Bucket,然后重新绑定到当前Bucket上。
你需要验证域名所有权。具体操作,请参见绑定自定义域名时返回错误码NeedVerifyDomainOwnership,怎么办?。
如果绑定自定义域名并且CNAME解析生效后,仍然无法预览文件,请排查以下设置:
设置 | 异常原因 | 解决方法 |
OSS |
| 根据文件类型,设置合理的Content-Type。具体操作,请参见如何设置Content-Type(MIME)?。 |
| 将Content-Disposition设置为 | |
CDN | 缓存资源未刷新。 | 刷新CDN缓存资源。具体步骤,请参见刷新和预热资源。 |
浏览器 | 不支持预览该格式的文件,例如.doc、.ppt、.pdf、.mov文件。 |
|
可以继续使用。如何获取之前的文件URL,请参见使用预预签名URL下载文件。
一般是通过公网访问。公网用户通常需要以预览的方式访问您的OSS文件,因此自定义域名默认解析到Bucket的外网访问域名。
如需实现使用自定义域名访问OSS文件时是下载行为,您可以将Content-Disposition
设置为attachment。具体操作,请参见如何配置通过自定义域名访问OSS文件实现强制下载?。
可能是本地DNS缓存导致,您可以使用以下命令清除DNS缓存,然后尝试访问。
ipconfig /flushdns
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
sudo systemd-resolve --flush-caches
<video>
标签时,如果服务器设置了 Content-Disposition: attachment
,某些浏览器仍然会选择播放视频,而不是下载?使用 <video>
标签时,浏览器会主动请求视频流,并优先考虑 MIME 类型。如果服务器返回的 MIME 类型适合播放(如 video/mp4
),浏览器会选择播放,而忽略 Content-Disposition: attachment
的指示。