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

webman跨域相關(guān)問題

zh7314

2023年9月13日14:14:05

webman版本1.5
php版本8.0
運行環(huán)境windows

測試項目:https://gitee.com/open-php/zx-webman-website

webman在跨域的時候,會有點不同因為第一個區(qū)別就是是否關(guān)閉自動路由

//關(guān)閉自動路由
Route::disableDefaultRoute();

如果不關(guān)閉路由只要簡單的在路由上掛上跨域中間件,如果開啟自動路由,就在config/middleware.php添加就可以了

return [
    '' => [
        app\middleware\CrossDomain::class,//跨域請求
    ]
];

CrossDomain中間件的代碼

<?php

namespace app\middleware;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

//跨域
class  CrossDomain implements MiddlewareInterface
{
    public function process(Request $request, callable $next): Response
    {
//        p(getTime() . self::class);
        // 如果是options請求則返回一個空響應(yīng),否則繼續(xù)向洋蔥芯穿越,并得到一個響應(yīng)
        $response = strtoupper($request->method()) === 'OPTIONS' ? response('', 204) : $next($request);
        // 給響應(yīng)添加跨域相關(guān)的http頭
        $response->withHeaders([
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Allow-Origin' => $request->header('origin', '*'),
            'Access-Control-Allow-Methods' => $request->header('access-control-request-method', '*'),
            'Access-Control-Allow-Headers' => $request->header('access-control-request-headers', '*'),
        ]);
        return $response;
    }
}

如果關(guān)閉自動路由掛在中間件就如下:

Route::group('/open', function () {

    Route::get('/test', [app\controller\Web\TestController::class, 'index'])->name('測試');
    Route::post('/uploadPic', [app\controller\Web\IndexController::class, 'uploadPic']);//上傳圖片文件
    Route::post('/uploadFile', [app\controller\Web\IndexController::class, 'uploadFile']);//上傳普通文件
})->middleware([
    app\middleware\CrossDomain::class,
    app\middleware\ApiLog::class
]);

關(guān)閉自動路由的情況下需要額外配置一點東西

<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://m.wtbis.cn/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

use app\util\GlobalCode;
use Webman\Route;
use support\Request;

//請求不存在的url返回信息
Route::fallback(function (Request $request) {
    $response = strtoupper($request->method()) === 'OPTIONS' ? response('', 204) : returnJson([GlobalCode::CODE => GlobalCode::NOT_FOUND, GlobalCode::MSG => '404 not found', GlobalCode::DATA => null]);
    $response->withHeaders([
        'Access-Control-Allow-Credentials' => 'true',
        'Access-Control-Allow-Origin' => "*",
        'Access-Control-Allow-Methods' => '*',
        'Access-Control-Allow-Headers' => '*',
    ]);
    return $response;
});
//關(guān)閉自動路由
Route::disableDefaultRoute();

//首頁
Route::get('/', function ($rquest) {
    return view('index/view');
});

//前臺,api有權(quán)限
Route::group('/open', function () {

    Route::get('/test', [app\controller\Web\TestController::class, 'index'])->name('測試');
    Route::post('/uploadPic', [app\controller\Web\IndexController::class, 'uploadPic']);//上傳圖片文件
    Route::post('/uploadFile', [app\controller\Web\IndexController::class, 'uploadFile']);//上傳普通文件
})->middleware([
    app\middleware\CrossDomain::class,
    app\middleware\ApiLog::class
]);

if (!function_exists('returnJson')) {
    function returnJson(mixed $data = null, int $status = 200, array $headers = ['Content-Type' => 'application/json'], int $options = JSON_UNESCAPED_UNICODE): Response
    {
        return new Response($status, $headers, json_encode($data, $options));
    }
}
2140 2 5
2個評論

dongdongqiang

group里面的Route::xxx需要全部改為any

  • 暫無評論
晚安。

+1

  • 暫無評論

zh7314

790
積分
0
獲贊數(shù)
0
粉絲數(shù)
2021-12-13 加入
??