base64 在 Laravel 5.4 的中间件中不起作用

base64 not working in Middleware of Laravel 5.4

我的中间件代码:

public function handle($request, Closure $next) {
        $api_headers = getallheaders();
        $error_msg = '';
        $error = 0;
        if (isset($api_headers) && !empty($api_headers)) {
                    
            if (isset($api_headers ['device_id']) && !empty($api_headers['device_id'])) {
            
        } else {
            $error_msg = 'Please send device ID header.';
            $error = 1;
        }
        
        if (isset($api_headers['device_type']) && !empty($api_headers['device_type'])) {
            
        } else {
            $error_msg = 'Please send device type header.';
            $error = 1;
        }
    } else {
        $error_msg = 'Please send headers.';
        $error = 1;
    }
    
    if ($error == 1) {
        return base64_encode(response()->json(['error' => true, 'message' => $error_msg, 'code' => 0]));
    } else {
        return $next($request);
    }
}

我想将 JSON 转换为编码字符串并将其作为响应发送。所以我用 base64_encode 把它转换成一个字符串。但它不适用于中间件。我不知道是什么原因,我做了很多努力,但不知道该怎么做。我还附上了错误的屏幕截图。如果可能请帮忙。

我不知道你想用什么状态码来响应,但是试试:

    $encoded = base64_encode(response()->json([
        'error' => true,
        'message' => $error_msg,
        'code' => 0
    ]));

    return response($encoded, ?response status code?)
               ->header('Content-Type', 'text/plain');