文档说明
加速资源的引用
了解加速资源的引用方式,特别是无Referer信息的访问,好快速启动您的项目。
1.方案概览
引用方式 | 适用于 | 说明 |
普通方式 | 绝大部分网站 | 满足域名限制要求,且请求带Referer信息(一般网页默认) |
跨域方式 | 无Referer情形 | 满足域名限制要求或离线本地,但请求不带Referer信息(出于安全考虑,跨域或跨站禁用了Referer)。支持启用SRI安全模式。 |
引导方式 | 离线本地情形 | 每次加载当前页面大概会多加载一次,虽然很快,但还是影响体验。 |
跳转方式 | 本地简易名称情形 | 不满足域名限制要求,网站域名为简易名称(不带点),本地内部解析。由我们的带参数引导URL跳转到客户网站,只需跳转一次。 |
高级方式 | 注册会员情形 | 初次加载当前页面需要使用过渡页,需要申请获取用户ID和访问token,需要在后端使用MD5计算签名。能满足特殊需要,但不适用于静态网页内容。 |
2.引用方式一(普通方式)
在网页里通过普通的link标签、script标签、img标签和其他媒体标签来引入css、js、image和其他媒体文件。
下面简要说明一下基本用法:
文件类型 | 扩展名 | 用法举例 |
样式文件 | css | <link type="text/css" rel="stylesheet" href="test.css"> |
JS程序文件 | js | <script src="test.js" ></script> |
图片文件 | git,jpg,jpeg,png,bmp,webp | <img src="test.png"> |
声音文件 | wav,mp3,mid,wma |
<embed height="50" width="100" src="test.mp3"> <object height="50" width="100" data="test.mp3"></object> <audio controls> <source src="test.mp3" type="audio/mpeg"> <source src="test.ogg" type="audio/ogg"> Your browser does not support this audio format. </audio> |
视频文件 | mp4,ogg,webm |
<video width="320" height="240" controls> <source src="test.mp4" type="video/mp4"> <source src="test.ogg" type="video/ogg"> Your browser does not support this video format. </video> |
如果网站使用HTTP响应头或页面META头来禁用了跨站或跨域不发送Referer信息,则可以在引入标签上添加属性“referrerpolicy”,值可为“origin”、“origin-when-cross-origin”(推荐)或“unsafe-url”,强制发送Referer。此方式不适用于非HTTP协议模式。示例如下:
<script src="test.js" referrerpolicy="origin-when-cross-origin"></script>
3.引用方式二(跨域方式)
在上述普通方式的基础上,在主标签上添加跨域属性crossorigin,值为“anonymous”(推荐)或“use-credentials”。例如:
<script src="test.js" crossorigin="anonymous"></script>
支持以下标签:<link>、<script>、<img>、<audio>、<video>。
当您的页面访问我们的跨站资源时,如果请求无Referer信息,可采用此法引用。此方法也适用于离线本地(无服务器)模式。
此方式还支持子资源完整性(Subresource Integrity,SRI)安全模式,就是强制要求浏览器验证此资源是否原始文件,没有在中途被纂改过。如果被纂改过,则不加载该资源。通过添加属性“integrity”,配合跨域属性“crossorigin”可启用。示例如下:
<script src="https://npm.webcache.cn/jquery@2.2.4/dist/jquery.min.js" integrity="sha384-rY/jv8mMhqDabXSo+UCggqKtdmBfd3qC2/KvyTDNQ6PcUJXaxK1tMepoQda4g5vB" crossorigin="anonymous"></script>
本站当前已支持CDNJS和NPM资源的SRI复制,您还可以通过第三方在线工具(SRI Hash Generator)生成。
当前互联网已充斥着各种不安全因素,推荐使用此SRI安全模式,防止您的网站被挂马。
4.引用方式三(引导方式,研发中)
只需在加载外部资源前,先加载此引导地址,如下:
<script src="https://webcache.cn"></script>
完整示例如下:
<script src="https://webcache.cn"></script>
<script src="https://cdnjs.webstatic.cn/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
<script src="https://npm.webcache.cn/jquery@3.7.1/dist/jquery.js"></script>
此方案每次加载当前页面大概会多加载一次,虽然很快,但还是影响体验。建议只用于离线本地调式。
若要使用在正常服务模式下,需要在引导地址标签上添加跨域属性“crossorigin”,且值必须为“use-credentials”。
注意,此引导方式下,不能在引导地址标签上添加属性“crossorigin="anonymous"”和“crossorigin”(空值)。
5.引用方式四(跳转方式,研发中)
使用引导服务引导并跳转到具体网页。引导服务路径及参数如下:
https://webcache.cn/{scheme}/{site_domain}{page_path}{url_params}
说明:
- {scheme} - 此为目标网站协议,可为http/https/file
- {site_domain} - 此为目标网站域名。
- {page_path} - 此为目标页面路径,可为空
- {url_params} - 此为目标页面参数,可为空
若实际目标网站域名为简易名称(不带点),还需要申请获取用户ID,并组成格式为“{name}.{user_id}.local”的伪域名。否则,虽然可跳转,但无法获取到我们的加速资源。
若实际目标页面为离线本地文件(如windows本地文件),只能以下面描述的第二种方式在离线本地过渡页加载。
此方案有两种加载方式:
1)以HTML文档类型被浏览器直接访问或被父页面容器(如iframe)引入。
2)以JS文件类型被过渡引导页的script标签引入。
URL示例如下:
https://webcache.cn/https/baidu.com
https://webcache.cn/https/www.webcache.cn/convert.html
https://webcache.cn/http/test.local/?key=12345
https://webcache.cn/http/test.1234567890ABCDEF.local/
https://webcache.cn/file//C:/Users/Administrator/Documents/test.htm
跳转到目标页面后,页面地址将会被追加参数“_refererId”,值为一串比较短的数字。目标页面需要在所有引用我们的加速资源的URL上也追加该参数,但参数名为“refererId”。
新地址示例如下:
https://www.webcache.cn/convert.html?_refererId=236593
其加速资源的URL示例如下:
<script src="https://cdnjs.webstatic.cn/ajax/libs/lodash.js/4.17.21/lodash.min.js?refererId=236593"></script>
此方案可用于嵌入页面和本地调试。
6.引用方式五(高级方式,研发中)
首先,需要您在我们的网站申请您的用户ID和访问token。
然后,您需要制作一个引导页,须为不具有实际地址的内部页,内容大致如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Load</title>
<script>
function callback(refererId){
document.cookie = '_refererId='+refererId;
window.location.reload();
}
</script>
<script src="https://webcache.cn/?<loadParams>"></script>
</head>
<body>
</body>
</html>
上述加载地址参数“loadParams”须在主页后端初始化时根据给定信息,并按照一定的规则生成,规则如下:
1)所需值:
- 用户ID(user_id) - 向我们申请
- 访问token(token) - 向我们申请
- 站点名称(site_name) - 您给自己网站起的名称,可为单名(符合域名主名称规则),或域名。
- 时间戳(ts) - 按中国北京时间时区计算从1970-01-01 00:00:00到现在的秒数。
2)根据上述值联合并计算MD5值,联合规则为(不包括{}):“{token}site_name{site_name}ts{ts}user_id{user_id}”
3)计算出的MD5值作为签名参数“sign”和上述4个参数一并添加到URL中。
4)还需要一个回调参数“callback”,用于接收引导服务传过来的“refererId”。
附PHP代码生成函数,如下:
<?php
function getLoadParams(){
$token = '1234567890abcdef1234567890abcdef';
$content = array(
'ts' => time(),
'user_id' => '0000000000000000',
'site_name' => 'test.local'
);
$content['sign'] = md5(implode('',array(
$token,
'site_name',
$content['site_name'],
'ts',
$content['ts'],
'user_id',
$content['user_id']
)));
$paras = [];
foreach($content as $key => $value){
$paras[] = $key.'='.urlencode($value);
}
return implode('&', $paras).'&callback=callback';
}
当此引导页加载完时,会获得一个“refererId”值,并需要设置到会话中。
然后,主页加载时需要先判断该状态参数是否有值,若没有,则输出上述引导页内容, 并结束。否则,继续正常加载,且在加速资源URL上需要追加上述参数“refererId”。
简化内容大致如下:
<script src="https://cdnjs.webstatic.cn/ajax/libs/moment.js/2.29.4/moment.min.js?<refererId>"></script>
此方案目前正在研发中,推荐高级用户使用。未来满足于收费用户。
本用法介绍完毕!当前部分扩展用法正在研发中,有变动时,将及时更新。
更新时间:2024.08.13