如何在接收和解析请求body之前检查POST请求headers?
How to check POST request headers before receiving and parsing request body?
当收到 POST 请求时,在收到请求 body 并解析它之前,有没有办法检查它的 headers?
假设您有非常大的传入 POST 请求 (~25MB),您需要根据它们的 headers' 内容决定是处理它们还是丢弃它们。
为了节省带宽、内存、cpu和时间,如果能有这样的流程就更好了:
- POST 请求到达服务器。
- 服务器只接收到headers内容,然后保持传输待命。
- 服务器检查 headers 并决定做什么。
- 如果 headers 正常,它会继续接收请求并解析 body,否则它会关闭连接并发送 401 回复。
这可能吗?如果是这样,在 Koa 中执行此操作的好方法是什么?
谢谢!
您无法在 "receiving" body 之前检查 headers。如果你想做那样的事情,你需要创建一个自定义函数,从套接字读取字节,只解析 headers,并在某些逻辑的情况下关闭连接,这可能比你愿意做。
您可以做的是创建一个读取 headers 的中间件函数,然后 a) 继续下一个中间件或 b) 结束请求。然后你可以让这个中间件在 body 解析中间件之前执行(如果你使用类似 koa-body 的东西)。这样,虽然 body 已经是 "received",但在 body 被解析之前发送请求。
实现这样的东西非常容易,并且有很多指南概述了创建和注册新中间件的过程。如果您还不知道该怎么做,我建议您从 here.
开始
编辑:如果您正在进行文件上传并且您正在使用 multipart 那么使用中间件功能检查 headers 并发送 401 应该不是问题。这将终止连接并文件上传,只要在开始解析上传之前完成即可。
当收到 POST 请求时,在收到请求 body 并解析它之前,有没有办法检查它的 headers?
假设您有非常大的传入 POST 请求 (~25MB),您需要根据它们的 headers' 内容决定是处理它们还是丢弃它们。
为了节省带宽、内存、cpu和时间,如果能有这样的流程就更好了:
- POST 请求到达服务器。
- 服务器只接收到headers内容,然后保持传输待命。
- 服务器检查 headers 并决定做什么。
- 如果 headers 正常,它会继续接收请求并解析 body,否则它会关闭连接并发送 401 回复。
这可能吗?如果是这样,在 Koa 中执行此操作的好方法是什么?
谢谢!
您无法在 "receiving" body 之前检查 headers。如果你想做那样的事情,你需要创建一个自定义函数,从套接字读取字节,只解析 headers,并在某些逻辑的情况下关闭连接,这可能比你愿意做。
您可以做的是创建一个读取 headers 的中间件函数,然后 a) 继续下一个中间件或 b) 结束请求。然后你可以让这个中间件在 body 解析中间件之前执行(如果你使用类似 koa-body 的东西)。这样,虽然 body 已经是 "received",但在 body 被解析之前发送请求。
实现这样的东西非常容易,并且有很多指南概述了创建和注册新中间件的过程。如果您还不知道该怎么做,我建议您从 here.
开始编辑:如果您正在进行文件上传并且您正在使用 multipart 那么使用中间件功能检查 headers 并发送 401 应该不是问题。这将终止连接并文件上传,只要在开始解析上传之前完成即可。