首页 > 解决方案 > 当其他应用程序请求时,Laravel api 返回“500 Internal Server Error”

问题描述

使用 larvael api 进行测试,使用 fiddler 或 postman 时返回 200

邮递员结果

但是在我尝试从另一个 Web 应用程序访问后,请求失败。

我的应用结果

Api 的登录功能。

    public function login(Request $request){
    if(Auth::attempt(['email' => $request->all()['email'], 'password' => $request->all()['password']])){
        $user = Auth::user();
        $success['token'] = $user->createToken('MyApp')-> accessToken;
        $success['user'] = $user;
        return response()->json(['success' => $success], $this-> successStatus);
    }
    else{
        return response()->json(['error'=>'Unauthorised'], 401);
    }
}

在另一个 Web 应用程序上运行。

    public function req()
{
    $client = new Client();
    $response = $client->request('post', 'http://testapi/api/login', [
            'form_params' =>
                ['email' => 'oleg@mail.ru',
                    'password' => '123456']
        ]
    );

    $r = $response->getBody()->getContents();
    return redirect('/home');
}

通过反复试验,我意识到没有生成令牌,我无法理解为什么会发生这种情况,因为在 Postman 和 Fiddler 的帮助下一切正常。

执行到达这条线,一切都下降了。

 $success['token'] = $user->createToken('MyApp')-> accessToken;

请懂行的人帮忙!我将不胜感激!

标签: phplaravelapiwebguzzle

解决方案


当您的方法与接收的方法不相等时,就会发生这种情况。提交方法应该是postlike postman,所以不会发生错误。另外,要以 json 的形式显示信息,recipe header 本身的值必须 Accept等于Application/json.


推荐阅读