php - 当其他应用程序请求时,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;
请懂行的人帮忙!我将不胜感激!
解决方案
当您的方法与接收的方法不相等时,就会发生这种情况。提交方法应该是post
like postman
,所以不会发生错误。另外,要以 json 的形式显示信息,recipe header 本身的值必须 Accept
等于Application/json
.
推荐阅读
- jquery - 需要帮助将导航栏从透明背景更改为滚动时的纯色背景
- python - 在带有子字符串的列表中查找元素
- rust - Rust 中的“where for”是什么意思?
- rust - 使用`fd-find` crate列出Rust中所有名为`test`的文件夹?
- flutter - Flutter 和 firebase 云消息传递,使用 API 发送通知?
- javascript - 为什么函数的变量通过“.”在外面声明 只能通过“.”访问 函数内部?
- android - Error: Can't call startAt() or equalTo() multiple times
- typescript - 当存在类型检查问题时,来自 node_modules 的 tsc 不会引发控制台异常
- javascript - 短时间内多次调用异步函数搞乱购物车
- python - 如何在 Python 中返回带有双星/星号的 **kwargs?