时间戳防盗链
 
                  更新时间 2024-09-19 19:41:14
                 
 
                    最近更新时间: 2024-09-19 19:41:14
                  
 本文介绍如何使用边缘函数部署时间戳防盗链。
 通过时间戳进行请求防盗链。
示例代码
/* 
示例url:https://ctyun.cn/timestamp?time=1622531831755&token=abcabc
*/
addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request))
})
async function handleRequest(request){
    //401表示鉴权不通过
    let statuscode = 401
    let result = 'TimeStamp verification failed!'
    try {
        if(verifyTimeStamp(request.url) == true){
            statuscode = 200
            result = "TimeStamp verification succeeded!"
            // 返回请求内容
        }
    } catch (error) {
        result = error
    }
    return new Response(result, { "status": statuscode })
}
function verifyTimeStamp(url){
    //"url": "https://ctyun.cn/timestamp?time=1622531831755&token=abcabc", 
    let currentTime = new Date().getTime()
    let myURL = new URL(url)
    let searchParams = new URLSearchParams(myURL.search)
    let timeStamp = parseInt(searchParams.get('time'))
    let token = searchParams.get('token')
    // 校验时间戳:如果时间戳距离当前时间没有过期,则进行 token 检查
    if (currentTime - timeStamp < 60000) {
        // 校验token
        return tokenCheck(token)
    }
    return false
}
function tokenCheck(token){
    // 此处可替换为自定义的复杂加解密算法
    return token == "abcabc"
}
示例预览
访问请求传入未过期时间、鉴权token,鉴权通过。

相关参考
- 运行时API:addEventListener
- 运行时API:FetchEvent
- 运行时API:Web Standards
- 运行时API:Response
- 运行时API:Fetch
