webman 如果在中间件中抛出异常就会产生跨域错误

VAV

webman 如果在中间件中抛出异常就会产生跨域错误,项目中,我的所有错误响应都是以异常的方式返回的,在身份验证中间件中,如果token验证失败,我就会抛出异常,此时APP端就会报跨域错误截图截图截图截图

1218 3 0
3个回答

Le

检查身份之前加个处理跨域option的操作

  • VAV 2022-07-29

    增加了啊
    路由文件
    Route::options('[{path:.+}]', function (){
    return response('');
    });
    跨域中间件也加了这个$response = $request->method() == 'OPTIONS' ? response('') : $next($request);

xiuwang

把跨域中间件放在报异常的中间件前面就好了,也就是让跨域中间件优先执行

  • 爱吃鱼 2022-07-29

    异常不是一个中间件怎么放到跨域前面呢。我目前是在中间件里try catch return json()这样解决的。

  • xiuwang 2022-07-29

    中间件有执行顺序,把跨域中间件放在所有中间件前面,让跨域中间件最先执行。不然你在其它中间件直接抛出异常了,都没执行到跨域中间件,那肯定报跨域错误啊。

不友善的人类

我也是同样的问题,

return [
    '' => [
        middleware\AllowCrossDomain::class,
        middleware\BaseConfig::class,
        middleware\ActionHook::class,
    ]
];

中间件最先执行的就是跨域中间件,但只要抛出异常还是跨域

  • fan15500 2022-10-16

    跨域的问题不好解决,其实最好的办法是在入口文件里直接返回跨域判断,因为如果是跨域请求option,那么就不应该进入后续操作,因为它只是判断是不是有权限访问。给它返回就行了。让真实的请求能正常进入服务就OK。

年代过于久远,无法发表回答
×
🔝