Laravel api 在其他应用程序请求时返回"500 Internal Server Error"



使用幼虫 API 进行测试,当使用小提琴手或邮递员时,它返回 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');
}

通过反复试验,我意识到没有生成令牌,我不明白为什么会发生这种情况,因为在邮递员和小提琴手的帮助下,一切都解决了。

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

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

知识渊博的人,请帮忙!我会非常感激的!

此 Web 应用程序是否在 Laravel 应用程序以外的其他域上运行?如果是这样,您可能需要研究 CORS(跨源资源共享(支持。 这似乎是 CORS 支持 https://github.com/barryvdh/laravel-cors 的流行软件包

我希望这对你有所帮助。

编辑:

您在$user->createToken('MyApp')->accessToken之间有一个空间

比如:$user->createToken('MyApp')-> accessToken应该是$user->createToken('MyApp')->accessToken的。这在您的代码中是固定的吗?

返回语句中的这一部分也是如此$this-> successStatus应该$this->successStatus.另外,是否定义了成功状态?

如果这不是问题所在,请尝试在$user->createToken('MyApp')上涂鸦dd(),看看是否返回任何内容。如果是这样,请检查是否存在accessToken属性。

当您的方法不等于接收到的方法时,会发生这种情况。 提交方法应该是像postman这样的post,这样就不会发生错误。 此外,要以 json 的形式显示信息,配方标头本身中的值必须Accept应等于Application/json

因为它受 csrf 令牌保护,这是您在测试 env 时的解决方案。

评论此行

AppHttpMiddlewareVerifyCsrfToken::class,

in app\Http\Kernel.php

相关内容

最新更新