Ошибка CORS в Yii2 — react?

При попытке авторизации возвращается данная ошибка. Как её исправить?

cess to XMLHttpRequest at 'localhost:8000/admin/admins/insert-popular' from origin 'localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

xhr.js:244 POST localhost:8000/admin/admins/insert-popular net::ERR_FAILED

Метод отправки запроса на клиентской стороне:
const handleLogin = () => {
const result = axios.post("http://localhost:8000/login/logins/login",{usernam...})
.then((result) =>{
console.log(result);
const token = result.data.token;
setToken(token);
localStorage.setItem("token",token);
}
).catch(
(error) => {
console.log(`Error: ${error} !!!!!!!!!!!!!!!!!!!!!!!!`);
}
)
};

Это контроллер принимает данные с клиентской части:
class LoginController extends Controller
{
public function actionLogin()
{
$request = Yii::$app->getRequest();
$username = $request->getBodyParam('username');
$password = $request->getBodyParam('password');

$user = User::findByUsername($username);
if (!$user) {
return ['error' => 'Нет такого пользователя!'];
}

if (!$user->validatePassword($password)) {
return ['error' => 'Неверный пароль!'];
}

$accessToken = Yii::$app->security->generateRandomString();
$token = Token::generateToken($user->username, md5($password), $accessToken);

return 'token: '.$accessToken;
}
}

В файл web.php я добавил это согласно рекомендации гугла
'response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Authorization, Content-Type');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
},
],
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 1
@pantsarny
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы