Open HelplessMan opened 10 months ago
现在好想找到原因了, 不需要 render
....
将 \App\Http\Middleware\AcceptHeader::class
从 $middlewareGroups.api
的位置移动到 $middleware
这里就可以了...
这是什么原因呢?
出现问题的原因可能是部分路由请求不符合 $request->expectsJson()
:
// vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php
protected function renderExceptionResponse($request, Throwable $e)
{
return $this->shouldReturnJson($request, $e)
? $this->prepareJsonResponse($request, $e)
: $this->prepareResponse($request, $e);
}
// vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php
public function expectsJson()
{
return ($this->ajax() && ! $this->pjax() && $this->acceptsAnyContentType()) || $this->wantsJson();
}
放AcceptHeader
到$middleware
中,相当于让所有路由请求都成了 api 请求,可以按这思路检查下
大致配置:
config/response.php
namespace App\Http\Middleware;
use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response;
class AcceptHeader { /**
protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class ];
// if ($exception instanceof ThrottleRequestsException) { // return Response::fail($exception->getMessage(), 429); // } return $this->prepareJsonResponse($request, $exception); }