国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于跨域時option請求無法被中間件捕獲的問題

深林孤鷹

可以捕獲的情況:


Route::group('/adminapi', function() {
  Route::options('/v1/setting/user', [app\controller\adminapi\v1\setting\UserController::class, 'index']);
  //或者:Route::any('/v1/setting/user', [app\controller\adminapi\v1\setting\UserController::class, 'index']);
  。。。
})->middleware([\app\middleware\AccessControlMiddleware::class]);

上面兩種情況,中間件可以正常捕獲到option請求,但有一種情況:


Route::group('/adminapi', function() {
  Route::resource('/v1/setting/user', [app\controller\adminapi\v1\setting\UserController::class, ''index', 'show', 'store', 'update', 'destroy'']);
  。。。

  Route::fallback(function() {
    echo "fallback: " . request()->method() . PHP_EOL;
    return ret_value(-1, "404", null, 404);
  });
})->middleware([\app\middleware\AccessControlMiddleware::class]);

卻無法在中間件或fallback中獲得option請求,直接返回跨域錯誤。請問如果需要resource處理跨域,則必須在resource下面加上 Route::options('/v1/setting/user', function(){}); 嗎,感覺不太方便。。

(另外,希望作者大神能修復(fù)DELETE請求帶Body的奇特問題,可以直接忽略Body的,服務(wù)器不應(yīng)該因為客戶端的任何請求出現(xiàn)問題。。。)

1451 1 0
1個回答

walkor 打賞

Route::fallback 不支持中間件。
resource跨域需要定義options行為,框架不可能自作主張給你定義一個options路由。

DELETE 請求帶body和get帶body后面會考慮支持

  • 深林孤鷹 2022-09-15

    謝謝大神~明白了,剛才調(diào)試又發(fā)現(xiàn)個問題:
    Route::group 里定義的 Route::fallback 仍然是全局的?我以為只是在group中起作用,我在兩個group里定義了兩個fallback,誰知只有一個啟用,且是全局的。。。

    另外還有一個疑問,路由支持通配符嗎?比如 Route::option('/v1/setting/user/*',。。。),(我估計是不支持的吧)

  • walkor 2022-09-15

    Route::fallback 是全局的。
    支持 Route::option('/v1/setting/user/{id}',。。。) 這種

  • 深林孤鷹 2022-09-15

    了解,看來先用這個辦法來解決吧:
    Route::resource('/v1/setting/user', app\controller\adminapi\v1\setting\UserController::class, ['index', 'show', 'store', 'update', 'destroy']);
    Route::options('/v1/setting/user[/{id}]', function(){});

    另外希望有局部的fallback,否則使用路由實現(xiàn)多應(yīng)用時fallback不好單獨配置了。。。

年代過于久遠,無法發(fā)表回答
??