При попытке авторизации возвращается данная ошибка. Как её исправить?
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');
},
],