我想知道像 Flask、Django、Akka HTTP 或 Spring 这样的网络框架是否在读取请求正文之前检查 header 。
我可以有一个网络服务器端点,用于上传一些文件,例如用户头像。 据推测,我可以在没有 Auth header 的情况下用大文件撞击服务器并减慢它的速度。
我认为服务器应该首先检查用户是否被授权/ header 是否正常,然后再将正文读入内存。 Web 框架如何解决这个问题?我在哪里可以阅读更多它是如何处理的?
最佳答案
Web 框架旨在灵活处理大量用例。这些用例之一是上传大文件。任何成熟的框架都会有一种机制来处理这种用例,而不会消耗大量内存,通常是将数据存储到磁盘。有些还公开了一种供应用程序处理程序直接访问原始字节流的方法。
在引擎盖框架下,首先阅读标题。他们通常会在解析 header 后将请求交给应用程序处理程序。然后由应用程序处理授权。大多数框架会公开一些访问字节原始数据流的方法,但更方便的方法是在应用程序首次请求数据时读取数据并将其解析为方便的结构。应用程序可能需要配置框架不这样做。通常,框架允许应用程序设置最大上传大小。超过该大小,客户端会收到错误。
每个框架的文档都可以提供有关上传的详细信息。以下是您指定的每个框架的上传文档:
关于web-services - Web 框架在读取正文之前是否检查授权 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62150910/