Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应

Posted

技术标签:

【中文标题】Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应【英文标题】:Laravel 8/Passport/GuzzleHttp APO returns 200 OK but no body response 【发布时间】:2021-02-05 10:05:02 【问题描述】:

我正在尝试使用 Passport 和 GuzzleHttp 使用 Laravel 8(后端)设置 vue.js 登录页面(前端)。

oAuth/Token:正常工作(用 Insomnia 测试) userData:工作正常(用 Insomnia 测试)

测试域由本地虚拟主机 (XAMPP) 设置。

我的控制器看起来像:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AuthController extends Controller


    public function login (Request $request)
    
        $http = new \GuzzleHttp\Client;
        try 
            $response = $http->post('http://testapp.test/oauth/token', [
                'form_params' => [
                    'grant_type' => 'password',
                    'client_id' => 2,
                    'client_secret' => 'TOKEN',
                    'username' => $request->username,
                    'password' => $request->password,
                ]
            ]);
            return $response->getBody();
         catch (\GuzzleHttp\Exception\BadResponseException $e) 
            if ($e->getCode() === 400) 
                return response()->json('Invalid Request. Please enter a username or a password.', $e->getCode());
             else if ($e->getCode() === 401) 
                return response()->json('Your credentials are incorrect. Please try again', $e->getCode());
            
            return response()->json('Something went wrong on the server.', $e->getCode());
        


    


我的 api 路由如下:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) 
    return $request->user();
);

Route::post('/login', 'App\Http\Controllers\AuthController@login');

当我通过 Insomnia 使用用户名/密码向 testapp.test/api/login 发出 Post 请求时,它返回 200 OK 但仅显示消息“没有返回响应的正文”。它应该显示 Bearer 令牌。

提前致谢

【问题讨论】:

【参考方案1】:

您需要获取-&gt;getContents() 才能获取内容。

$response = $response->getBody()->getContents();

它会返回 json。

【讨论】:

嗨迪利普,谢谢。但这不是解决方案 - 我已经添加了这个(之前也尝试过) - 结果相同。 200OK 但“没有返回响应的正文”

以上是关于Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

laravel和mongo怎么搭配使用