Я работаю над мобильным приложением, разработанным для angular 5 и ionic 3 для front-end и yii2 для api rest. Я внедряю модуль регистрации.
Но когда я отправляю почтовый запрос в API, это выдает мне ошибку.
Ну, язнаю свою распространенную ошибку. И тысячи решений присутствуют на разных форумах. Я испробовал все возможные решения, но ошибка все еще остается.
Вот что я сделал:
my ts file
getAuthHeaders()
{
let headers = new Headers({
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Origin': '*',
});
let options = new RequestOptions({headers: headers});
console.log(options);
return options;
}
async signUp(data)
{
let res = this.http.post('http://localhost:3000/api', {email: 'some@email.com', username: 'username', password: 'password'}, this.getAuthHeaders()).toPromise();
await res;
return res;
}
my yii2 controller
<code>public $modelClass = 'app\modules\api\models\User';
public $serializer = [
'class' => 'yii\rest\Serializer',
'collectionEnvelope' => 'items',
];
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['verbs'] = [
'class' => VerbFilter::className(),
'actions' => [
'login' => ['post', 'options'],
'signup' => ['post', 'get', 'options'],
],
];
// add CORS filter
$behaviors['corsFilter'] = [
'class' => Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Method' => ['*'],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 3600,
'Access-Control-Expose-Headers' => [],
"Access-Control-Allow-Origin" => "*",
"Access-Control-Allow-Headers" => "*"
],
];
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'except' => ['login', 'signup'],
'authMethods' => [
HttpBasicAuth::className(),
HttpBearerAuth::className(),
QueryParamAuth::className(),
],
];
echo "<pre>";
print_r('test'); //even this isn't working
echo "
"; exit; вернуть $ поведение;} открытая функция actionOptions () {echo"
";
print_r('test'); //this isn't working as well
echo "
"; exit; if (Yii :: $ app-> getRequest () -> getMethod ()! == 'OPTIONS') {Yii :: $ app-> getResponse () -> setStatusCode (405);} $ allow_verbs = ['GET', 'POST', 'HEAD', 'OPTIONS']; Yii :: $ app-> getResponse () -> getHeaders () -> set ('Allow', implode (',', $ allow_verbs));} открытая функция actionSignup () {echo "
";
print_r('test'); //this too not working
echo "
"; exit; $ model = new User (); $ post =\ Yii :: $ app-> request-> post (); if (! Isset ($ post ['email']) || пусто ($ post ['email'])) {$ data = array ('status'=> 'error', 'message' => \ Yii :: t ('app', '{field1} обязательный параметр', массив ('field1' => \ Yii :: t ('app', 'Email пользователя'))))); print_r (json_encode ($ data)); exit;} if (! isset ($ post ['password']) || пусто ($ post ['password'])) {$ data = array ('status '=>' error ',' message '=> \ Yii :: t (' app ',' {field1} обязательный параметр ', массив (' field1 '=> \ Yii :: t (' app ',' Пароль пользователя '))));print_r (json_encode ($ данных));Выход;} $ model-> email = $ post ['email'];$ model-> password = $ post ['password'];$ Модели-> SetPassword ($ модели-> пароль);$ model-> auth_key = \ Yii :: $ app-> security-> generateRandomString ();$ model-> updated_at = \ Yii :: $ app-> formatter-> asTimestamp (date_create ());$ model-> creation_at = time ();$ model-> status = 1;if (! $ model-> validate ()) {$ model-> save ();$ data = array ('status' => 'error', 'message' => \ Yii :: t ('app', $ model-> getErrors () ['email'] [0]));print_r (json_encode ($ данных));Выход;} \ Yii :: $ app-> mailer-> compose ('') -> setFrom ('no-reply@shahprizebond.com ') -> setTo ($ model-> email) -> setSubject (' Verification ') -> setTextBody ('Обычный текстовый контент') -> setHtmlBody ('
HTML content ') -> send ();print_r (json_encode (array ('auth_key' => $ model-> auth_key)));Выход;}
этот запрос прекрасно работает в почтальоне .
Любая помощь?