【发布时间】:2020-03-22 08:55:48
【问题描述】:
我已经克隆了已经实现了 CORS 的苗条骨架 (https://github.com/slimphp/Slim-Skeleton)。 但是仍然当 API 在 GET 之前调用 OPTIONS 时,它会发送 405 ERROR "Method not allowed. Must be one of: GET"
这是我遇到此错误的路线。 $group->get('/users', ListUsersAction::class);
$app->group('', function (Group $group) {
$group->post('/user/create', CreateUsersAction::class);
$group->get('/users', ListUsersAction::class);
$group->get('/user/{id}', ViewUserAction::class);
})->add(AuthenticationMiddleware::class);
邮递员正在使用相同的路线。如果我从标头中删除授权令牌,则相同的路线正在工作。
执行甚至没有到达“AuthenticationMiddleware”的第一行。
但是我通过添加没有“AuthenticationMiddleware”的相同选项路由来测试它。
像这样:
$app->options('/users', function(Request $request, Response $response) {return $response;});
$app->group('', function (Group $group) {
$group->post('/user/create', CreateUsersAction::class);
$group->get('/users', ListUsersAction::class);
$group->get('/user/{id}', ViewUserAction::class);
})->add(AuthenticationMiddleware::class);
这是有效的。所以我想我忘了添加一些代码,或者我做了任何导致错误的错误,或者骨架有错误。
有人可以帮忙吗? 提前致谢。
【问题讨论】:
-
这是文档和骨架中的一个已知“错误”。更好地为 CORS 预检请求使用显式
options()路由。 Example -
@odan 感谢您抽出宝贵时间发表评论并参与该问题。以下是我找到的答案(通配符
OPTIONS路线)。 -- 与您的建议类似。
标签: php routing cors slim slim-4