亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有授權標頭的 GET 請求之前的 OPTIONS 請求在苗條框架 4 中不起作用

帶有授權標頭的 GET 請求之前的 OPTIONS 請求在苗條框架 4 中不起作用

PHP
素胚勾勒不出你 2022-05-27 09:59:21
我已經克隆了已經實現了 CORS的超薄骨架( https://github.com/slimphp/Slim-Skeleton )。但是仍然當 API 在 GET 之前調用 OPTIONS 時,它會發送 405 錯誤“不允許的方法。必須是以下之一: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);這是有效的。所以我想我忘了添加一些代碼,或者我做了任何導致錯誤的錯誤,或者骨架有錯誤。有人可以幫忙嗎?提前致謝。
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

好的,我找到了解決方案。


您可以使用通配符OPTIONS請求來避免此問題/錯誤。下面是一個例子:


$app->options('/{routes:.+}', function ($request, $response, $args) {

    return $response;

});

我已經對其進行了測試,目前對我來說工作正常。


如前所述,在我的測試中,我通過創建OPTIONS路由來嘗試它/users,它正在工作,但是為創建OPTINOS的所有 API 路由創建路由是沒有意義的,這里是通配符OPTIONS路由的解決方案。


查看完整回答
反對 回復 2022-05-27
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

我只是在我想要使用的所有路線中添加了選項:


示例如果我在 /api/user 路由中使用它,則添加以下代碼:


$app->options('/api/user', function ($request, $response, $args) {

    return $response;

});


查看完整回答
反對 回復 2022-05-27
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號