Referer 是 HTTP 请求头的一个字段,表示请求的来源页面(协议+域名+查询参数)。您可以通过对访问用户 HTTP Request Header 中 referer 字段的值设置访问控制策略,从而限制访问来源,避免恶意用户盗刷。
示例:您在 https://www.example.com/test.html
页面上点击了 https://www.volcengine.com 的链接。在这个 HTTP 请求头中,Referer 为 https://www.example.com/test.html
。
Referer:Referer 的作用之一是作为防盗链使用。您可以通过 Referer 黑名单配置您的站点需要拒绝来自指定域名的请求或者通过白名单配置您的站点只允许来自特定域名的请求。
空 Referer:当一个请求不是由点击某个链接所触发,则此时该请求的 Referer 字段值为空,或者请求头中不包含 Referer 字段。比如您在浏览器里面直接输入 https://www.volcengine.com 进行访问。此时,请求头中就不包含 Referer 字段。如果允许 Referer 为空,表示您的站点允许浏览器直接访问。
说明
若您的 Referer 配置项由于某些原因(如启用了非标配置)被锁定,锁定后界面将展示锁定图标。您可提交工单联系技术支持修改配置。
登录 veImageX 控制台,单击服务管理。选择相应的图片服务,单击基础配置。
在分发配置页签的域名信息中,单击域名的管理按钮。
在配置页面,单击访问控制并进入页面后。选择防盗链配置,单击编辑按钮,并按照下表配置说明配置防盗链。
配置 | 说明 |
---|---|
状态 | 默认关闭。开启后,支持配置黑名单或者白名单。 |
类型 | 选择黑白名单类型,单选。
在配置黑名单或者白名单后,如果一个请求不匹配规则,缓存节点拒绝返回该请求信息,并直接返回 403 响应状态码。 |
包含空 Referer | 表示是否允许不包含 Referer 或者 Referer 字段值为空(如浏览器请求)的请求来访问资源。 |
规则 | 支持域名或 IP 地址。
|
正则表达式 | 请在打开开关后,填写 Referer 的正则表达式列表。 |
单击确定按钮,保存配置。
在您设置了 Referer 黑名单或 Referer 白名单后,veImageX 会使用 Referer 规则匹配用户请求中 Referer 字段的内容。匹配时不区分大小写。如果 Referer 字段的内容满足以下所有条件,则匹配成功。不然,则匹配失败。具体匹配规则以下表为例。
Referer 名单配置 | 用户请求中 Referer 头 | 是否匹配 | 匹配逻辑说明 |
---|---|---|---|
| http://www.test.com/test.js | 是 | Referer 头中的域名匹配名单。 |
http://www.test.com:80/test.js | 是 | ||
www.test.com | 否 | Referer 头不符合 HTTP 协议规范。规范要求 URL 必须是以下格式之一:
| |
2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | 否 | ||
http://2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | 否 | Referer 头不符合 HTTP 协议规范。规范要求当 host 是一个 IPv6 地址时,该地址必须包裹在 [] 中。 | |
http://[2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b] | 是 | Referer 头中的 IP 地址匹配名单。 | |
http://aaa.test.com | 是 | Referer 头中的多级域名匹配名单中的泛域名条目。泛域名是包含多级域名的。 | |
http://ss.aaa.test.com | 是 | ||
http://test.com | 否 | Referer 头中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。 |
您可以通过调用 OpenAPI 更新 Referer 防盗链配置,具体请参考 UpdateRefer。
www.example.com:8888
。此时,如果请求头部 Referer 携带值的内容是 www.example.com:8888
,veImageX 判定为不匹配。原因是 Referer 头部携带值的内容不符合规范。370e:b1:e411:6::1a
。此时,如果 Referer 字段的内容是 http://370e:b1:e411:6::1a:8090/
,veImageX 判定为 Referer 配置规则不匹配。如果结果是不匹配,veImageX 返回的状态码如下所示:
如果配置的是白名单,有以下情况:
如果配置的是黑名单,有以下情况: