tencent cloud

内容分发网络 CDN

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
应用场景
基本概念
使用限制
CDN性能说明(抽样)
购买指南
CDN 购买指南
ECDN 购买指南
快速入门
从零开始配置 CDN
接入域名
配置 CNAME
域名归属权验证
域名接入常见问题
配置指南
域名管理
域名配置
统计分析
刷新预热
日志服务
安全加速
服务查询
离线缓存
权限管理
权限配置
控制台权限说明
子账号或协作者开通实时日志的方法
场景教学
CDN 加速 COS 资源
实践教程
CDN 迁移至 EdgeOne 工具使用指南
CDN - CVM
CDN - COS
DNSPod 一键配置 CNAME
CDN日志定时存储
API 文档
History
Introduction
API Category
Content Management APIs
Real-time Log APIs
Service Query APIs
Data Query APIs
Making API Requests
Log Query APIs
StopCdnDomain
Configuration Management APIs
Obsoleted APIs
Other APIs
Data Types
Error Codes
常见问题
功能特性问题
计费相关问题
域名接入问题
缓存配置问题
刷新预热问题
统计分析问题
HTTPS 相关问题
访问相关问题
故障相关问题
故障处理
状态码说明及处理建议
不同节点缓存内容不一致
接入 CDN 后,网页访问速度慢
流量命中率偏低
CDN 域名突然出现404状态
页面展示异常-访问跨域报错
资源缓存未生效
CDN Service Level Agreement
词汇表

配置说明

PDF
聚焦模式
字号
最后更新时间: 2024-12-31 11:14:28

配置场景

一般情况下,在 CDN 上分发的内容默认为公开资源,用户拿到 URL 后均可进行访问,为避免恶意用户盗刷您的内容进行牟利,除了通过 referer 黑白名单、IP 黑白名单、IP 访问限频等访问控制策略外,也可通过设置高级时间戳鉴权来进行盗刷防护。
注意:
配置时间戳防盗链后,客户端在发起请求时需要按照配置计算签名并携带至服务端,CDN 节点进行服务端校验,校验通过后才继续放行。

配置指南

查看配置

登录 CDN 控制台,在菜单栏里选择【域名管理】,单击域名右侧【管理】,即可进入域名配置页面,【访问控制】中可看到鉴权配置,默认情况下,鉴权配置为关闭状态:



修改配置

1. 修改配置

CDN 提供了四种鉴权签名计算方式供您选择,也可以通过上方【鉴权计算器】来查看不同鉴权模式、配置后最终效果,具体算法说明请参见 TypeATypeBTypeCTypeD 等算法说明文档:



2. 关闭配置

您可以通过鉴权配置开关,一键关闭配置,开关为关闭状态时,即便下方存在已有配置,仍不会现网生效,下次单击开启时,会先行进行配置的二次确认,不会立即发布至全网生效:



3. 区域特殊配置

若您的加速域名服务区域为全球加速,想针对境内、境外加速区域进行不同的鉴权配置,可单击配置下方的【添加特殊配置】进行设置:


注意:
区域特殊配置添加后,暂时无法直接删除,您可以通过关闭配置来禁用。

配置示例

若域名cloud.tencent.com为全球加速域名,鉴权配置如下:

则实际生效场景如下:
1. 中国境内用户实际访问资源http://cloud.tencent.com/1.jpg时,可直接发起请求。
2. 中国境外用户实际访问资源http://cloud.tencent.com/1.jpg,请求 URL 格式为 http://cloud.tencent.com/509301d10da7b862052927ed7a947f43/5e561139/1.jpg

示例代码

各鉴权计算方式如下,以 Python Demo 为例:
import requests
import json
import sys
import time
import hashlib

def generate_url(category, ts=None):
url = 'http://www.test.com' # 测试域名
path = '/1.txt' # 访问路径
suffix = '?a=1&b=2' # URL参数
key = 'abc123456789' # 鉴权密钥
now = int(time.mktime(time.strptime(ts, "%Y%m%d%H%M%S")) if ts else time.time()) # 如果输入了时间,用输入ts,否则用当前ts
sign_key = 'key' # url签名字段
time_key = 't' # url时间字段
ttl_format = 10 # 时间进制,10或16,只有typeD支持
if category == 'A': #Type A
ts = now
rand_str = '123abc'
sign = hashlib.md5('%s-%s-%s-%s-%s' % (path, ts, rand_str, 0, key)).hexdigest()
request_url = '%s%s?%s=%s' % (url, path, sign_key, '%s-%s-%s-%s' % (ts, rand_str, 0, sign))
print(request_url)
elif category == 'B': #Type B
ts = time.strftime('%Y%m%d%H%M', time.localtime(now))
sign = hashlib.md5('%s%s%s' % (key, ts, path)).hexdigest()
request_url = '%s/%s/%s%s%s' % (url, ts, sign, path, suffix)
print(request_url)
elif category == 'C': #Type C
ts = hex(now)[2:]
sign = hashlib.md5('%s%s%s' % (key, path, ts)).hexdigest()
request_url = '%s/%s/%s%s%s' % (url, sign, ts, path, suffix)
print(request_url)
elif category == 'D': #Type D
ts = now if ttl_format == 10 else hex(now)[2:]
sign = hashlib.md5('%s%s%s' % (key, path, ts)).hexdigest()
request_url = '%s%s?%s=%s&%s=%s' % (url, path, sign_key, sign, time_key, ts)
print(request_url)


if __name__ == '__main__':
if len(sys.argv) == 1:
print('usage: python generate_url.py A 20200501000000')
args = sys.argv[1:]
generate_url(*args)


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈