多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 405 Not Allowed 处理器 [Edit This Page](https://github.com/slimphp/Slim-Website/tree/gh-pages/docs/handlers/not-allowed.md) 如果你的 Slim 框架应用程序有一个路由匹配到了当前的 HTTP 请求 URI **而非 HTTP 请求方法**,程序将调用 Not Allowed 处理器并返回一个 `HTTP/1.1 405 Not Allowed` 响应到 HTTP 客户端。 ## 默认的 Not Allowed 处理器 每个 Slim 框架应用程序都有一个默认的 Not Allowed 处理器。该处理器将 HTTP 响应状态设置为 `405`,将内容类型设置为 `text/html`,它还会添加一个包含由逗号分隔的已被允许访问的 HTTP 方法组成的列表的 `Allowed:` HTTP 头它还会在 HTTP 响应体中写入一个简单的注释。 ## 自定义 Not Allowed 处理器 Slim 框架应用程序的 Not Allowed 处理器是一个 Pimple 服务。你可以通过应用程序容器对自定义 Pimple factory 方法进行定义,来创建自定义的 Not Allowed 处理器取代默认的 ``` // Create Slim $app = new \Slim\App(); // get the app's di-container $c = $app->getContainer(); $c['notAllowedHandler'] = function ($c) { return function ($request, $response, $methods) use ($c) { return $c['response'] ->withStatus(405) ->withHeader('Allow', implode(', ', $methods)) ->withHeader('Content-type', 'text/html') ->write('Method must be one of: ' . implode(', ', $methods)); }; ``` > **注意** Check out [Not Found](/docs/handlers/not-found.html) docs for pre-slim creation method using a new instance of `\Slim\Container` 在这个例子中,我们定义了一个新的 `notAllowedHandler` factory ,它将返回一个 callable 。返回的 callable 接收两个参数: 1. 一个 `\Psr\Http\Message\ServerRequestInterface` 实例 2. 一个 `\Psr\Http\Message\ResponseInterface` 实例 3. 一个由已允许访问的 HTTP 方法名组成的数组 这个 callable **必须** 返回一个恰当的 `\Psr\Http\Message\ResponseInterface` 实例。