Почтовый запрос отправь на yii2 от angular. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 10 ноября 2019

Я работаю над мобильным приложением, разработанным для angular 5 и ionic 3 для front-end и yii2 для api rest. Я внедряю модуль регистрации.

Но когда я отправляю почтовый запрос в API, это выдает мне ошибку.

enter image description here

Ну, язнаю свою распространенную ошибку. И тысячи решений присутствуют на разных форумах. Я испробовал все возможные решения, но ошибка все еще остается.

Вот что я сделал:

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)));Выход;}

этот запрос прекрасно работает в почтальоне .

Любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...