"php": ">=7.2",
"workerman/webman-framework": "^1.5.0",
Route::group('/w', function () {
Route::post('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
})->middleware([
// 中間鍵就用官方文檔里的“跨域部分的代碼”
// http://wtbis.cn/doc/webman/middleware.html
\app\middleware\AccessControlTest::class,
]);
API測試工具訪問接口完全正確,……但瀏覽器無法訪問。困惑我一天,一直以為問題在中間件的配置上出了問題,找之前運行成功項目的中間件代碼、中間件配置,完全一樣但還是訪問不了~~
找了諸多資料之后,發(fā)現(xiàn)可能路由的寫法不正確;正確運行的代碼如下:
Route::group('/w', function () {
Route::any('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
})->middleware([
// 中間鍵就用官方文檔里的“跨域部分的代碼”
// http://wtbis.cn/doc/webman/middleware.html
\app\middleware\AccessControlTest::class,
]);
//找到不同了嗎?
// 無法訪問的路由
Route::post('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
//正確訪問的路由
Route::any('/v/list', [myapp\app\a\Wa::class, 'getList'])->name('w.list');
我猜:
Route::post()
不支持瀏覽器的“預檢”,望官方考慮一下瀏覽器的使用場景
Route::any()
支持瀏覽器的“預檢”
(文源:https://blog.csdn.net/qq_29712303/article/details/141184474)
// 設置$uri的任意方法請求的路由
Route::any($uri, $callback);
// 設置$uri的get請求的路由
Route::get($uri, $callback);
// 設置$uri的post請求的路由
Route::post($uri, $callback);
// 設置$uri的put請求的路由
Route::put($uri, $callback);
// 設置$uri的patch請求的路由
Route::patch($uri, $callback);
// 設置$uri的delete請求的路由
Route::delete($uri, $callback);
// 設置$uri的head請求的路由
Route::head($uri, $callback);
預檢是options請求,用Route::options()
因為預檢是options請求,你只設置post是無法收到,正確做法用Route::any()或者
Route::add(['POST', 'OPTIONS'], '/v/list', [myapp\app\a\Wa::class, 'getList']);
http://wtbis.cn/doc/webman/middleware.html#%E7%A4%BA%E4%BE%8B%EF%BC%9A%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82%E4%B8%AD%E9%97%B4%E4%BB%B6

文檔截圖