请求过滤脚本

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

设置请求过滤脚本

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

请求处理过程:

  1. |-----------------|
  2. | 接收到客户端请求 |
  3. |-----------------|
  4. |
  5. \|/
  6. |----------|
  7. | 配置请求 |
  8. |----------|
  9. |
  10. \|/
  11. |------------------|
  12. | 调用请求初始化脚本 |
  13. |------------------|
  14. |
  15. \|/
  16. |-------------------|
  17. | 配置Header、源站等 |
  18. |-------------------|
  19. |
  20. \|/
  21. |-------------------|
  22. | 调用准备发送请求脚本 |
  23. |-------------------|

类/函数

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

预定义变量

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

简单示例

在日志中打印请求ID

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

  1. console.log(req.requestId)

执行后,可以在”边缘节点”–“运行日志”中查看脚本中打印的日志。

根据条件修改响应Header

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

  1. // 查找匹配 webhook 的请求路径
  2. if (req.path.match(/webhook/)) {
  3. // 设置响应Header
  4. resp.setHeader("Hello", "World")
  5. }

关于resp更多可以使用的属性、方法,可以在这里查看。

根据条件输出自定义内容

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

  1. // 查找匹配 hello 的请求路径
  2. if (req.path == "/hello") {
  3. // 发送内容,发送后,请求不会继续执行
  4. resp.send(200, "Hello, World")
  5. }

关于resp更多可以使用的属性、方法,可以在这里查看。

常见问题

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

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

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

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