Вызов API возвращается почтальону, но возвращает 500 внутренних ошибок сервера при вызове и входе в браузер

Это связано с Laravel 5.4 и предоставлением паспортного пароля.

У меня есть маршруты для получения access_token для пользователя, который работает полностью нормально.

У меня также есть маршрут для обновления токена, если текущий токен истекает.

Когда я использую Почтальон, чтобы отправиться в путь

http://192.168.10.10/refresh

Я получаю это обратно, который действителен:

"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOi...deleting most of it.",
"expires_in": 600
}

Однако, когда я выбираю маршрут из браузера, используя axios через этот код:

let  headers = { 'Content-type': 'application/json' }
return axios.post("http://192.168.10.10/refresh", {headers: headers}).then(res => {
if (res) return res;
}).catch(err => {
if (err) return err.response;
});

Я получаю код ошибки HTTP 500.

Я также отслеживаю ошибки в журнале Laravel, и это трассировка стека.

[2017-08-30 07:21:41] local.ERROR: GuzzleHttp \ Exception \ ClientException: ошибка клиента: POST http://192.168.10.10/oauth/token привело к 400 Bad Request ответ:
{«error»: «invalid_request», «message»: «В запросе отсутствует обязательный параметр, содержит недопустимое значение параметра (усечено …)
в /home/vagrant/Code/work/vendorgraphs-api/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113

Другая часть этой ошибки состоит в том, что это может быть искаженное значение.

Это не имеет смысла для меня, и я попробовал все, начиная с запросов curl непосредственно из кода PHP, а также использовал функциональность http_query_builder.

Cache-Control →no-cache, private
Connection →keep-alive
Content-Type →application/json

Это то, что установлено на Почтальон с просьбой. Я также отправляю эти заголовки из браузера. Любые идеи о том, что может быть причиной проблемы? Это сводит меня с ума.

    public function refreshToken(Request $request)
{
if (!is_null($request)) {
$refreshToken = $request->cookie(self::REFRESH_TOKEN);

$http = new Guzzle();
$response = $http->request('POST','http://192.168.10.10/oauth/token', [
'form_params' => [
'grant_type' => 'refresh_token',
'refresh_token' => $refreshToken,
'client_id' => env("PASSWORD_GRANT_CLIENT_ID"),
'client_secret' => env("PASSWORD_GRANT_SECRET"),
'scope' => '',
]
]);
$data = json_decode($response->getBody());
$this->cookie->queue(
self::REFRESH_TOKEN,
$data->refresh_token,
864000, // 10 days
null,
null,
false,
true // HttpOnly
);

return response()->json([
'payload' => [
'access_token' => $data->access_token,
'expires_in' => $data->expires_in
]
]);

} else {
return response()->json("Could not refresh token", 401);
}
}

Сеть's tab for the request

А вот и контент для запроса почтальона.

введите описание изображения здесь

ЗДЕСЬ, ГДЕ Я ВНУШЕН.

Никакие параметры не передаются через этот запрос POST.
CORS включен на моем API, не получая ошибки перед полетом.
Заголовки одинаковы для обоих запросов.
Разница лишь в том, что используется Почтальон и Аксиос.
Ничего не меняется, кроме того, где делается запрос, через Почтальон или браузер.

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]