解决Directus Flows Webhook请求"INVALID_PAYLOAD"错误的BUG

Directus的Flows做自动化的过程中遇到个奇葩的bug折磨了我好几个小时。

事情的经过是这样的,使用endpoint建立了一个路由作为flow中的webhook请求,使用ApiTester测试一切正常,但是在服务端后台无论如何都无法发起请求,得到的都是400错误。

而查看Nginx日志发现API服务端根本没有接收到这个请求,这让我意识到请求被中途拦截了,这导致花了大量无效时间分析cloudflare端和服务端Nginx和Directus的请求保护机制

在Flow中错误的日记如下:

{
  "status": 400,
  "statusText": "Bad Request",
  ...
  ...
  "data": {
    "errors": [
      {
        "message": "Invalid payload. Unexpected token n in JSON at position 0.",
        "extensions": {
          "reason": "Unexpected token n in JSON at position 0",
          "code": "INVALID_PAYLOAD"
        }
      }
    ]
  }
}

原因分析

直到看到ApiTester中的这个提示

再根据上面的错误信息,很明显是因为没有payload的数据,请求直接被拒绝掉了,这时候我们只需要在Request Body中加上个{},尽管它毫无意义

再次测试 一次同通过。

Post Comment