> For the complete documentation index, see [llms.txt](https://liseen315.gitbook.io/laravel/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://liseen315.gitbook.io/laravel/qing-qiu-xiang-ying-he-zhong-jian-jian/laravel-he-zhong-jian-jian/zhong-jian-jian-jie-shao.md).

# 中间件介绍

中间件的概念是，应用程序周围有一系列层，如多层蛋糕或洋葱。如图10-1所示，每个请求在进入应用程序的过程中都会通过每个中间件层 然后，生成的响应在传递给最终用户的过程中通过中间件层传回。

中间件通常被认为是独立于应用程序逻辑的，理论上适用于任意应用，而不仅仅是目前正在开发的应用程序。

中间件可以检查并且装饰它或者拒绝请求，这意味着中间件非常适合于限流：它可以检查IP地址，在最后一分钟内检查访问该资源的次数，并在超过阈值时返回429（请求太多）状态。

因为中间件在退出应用程序时也可以访问响应，所以它非常适合装饰响应。例如，Laravel使用中间件将给定请求/响应周期中的所有排队cookie添加到响应中，然后将其发送给最终用户

中间件只所以强大的原因是它与请求/响应生命周期紧密结合。这使得它非常适合启用会话 - PHP需要您尽早打开会话并且很晚才关闭它，而中间件对此也很有用。
