请求过滤脚本

我们可以在边缘节点中使用Javascript脚本对请求等进行过滤、修改。

设置请求过滤脚本

可以在网站”设置”–“边缘脚本”中设置请求过滤脚本。

请求处理过程:

|-----------------|
| 接收到客户端请求   |
|-----------------|
     |
    \|/
|----------|
| 配置请求  |   
|----------|
     |
    \|/
|------------------|
| 调用请求初始化脚本  |
|------------------|
     |
    \|/
|-------------------|
| 配置Header、源站等   |
|-------------------|
     |
    \|/
|-------------------|
| 调用准备发送请求脚本  |
|-------------------| 

类/函数

除了Javascript自定义的所有类、函数外,还有以下CDN自定义的类/函数可以调用:

预定义变量

在边缘脚本中可以直接使用以下预定义变量:

简单示例

在日志中打印请求ID

如果想在日志中打印请求ID,可以在”请求初始化”脚本中写入以下脚本:

console.log(req.requestId)
执行后,可以在”边缘节点”–“运行日志”中查看脚本中打印的日志。

根据条件修改响应Header

可以使用resp.setHeader()方法来修改响应Header:

// 查找匹配 webhook 的请求路径
if (req.path.match(/webhook/)) {
	// 设置响应Header
	resp.setHeader("Hello", "World")
}
关于resp更多可以使用的属性、方法,可以在这里查看。

根据条件输出自定义内容

可以使用resp.send()方法来发送响应内容:

// 查找匹配 hello 的请求路径
if (req.path == "/hello") {
	// 发送内容,发送后,请求不会继续执行
	resp.send(200, "Hello, World")
}
关于resp更多可以使用的属性、方法,可以在这里查看。

常见问题

使用Javascript过滤请求会不会严重性能?

CDN的Javascript引擎使用了Google V8引擎,性能得到了很好的保证,通常对性能的影响不会超过10%。

使用console.log()打印的日志在哪里可以找到?

在Javascript中使用console.log()打印的日志可以在”边缘节点”–“运行日志”中找到(有可能会延迟1分钟左右),可以使用”标签”和关键词对日志进行筛选。