Как решить Http POST 403 (Запрещено) в Ionic 2

Я новичок в Ionic 2. Я хочу зарегистрировать пользователя из приложения. Для регистрации пользователя я использую API, МЕТОД которого - POST, а его тип носителя - x-www-form-urlencoded. Я хочу отправить данные на сервер.

Но когда я пытаюсь использовать IONIC serve, он отлично работает в веб-браузере, но когда я пытаюсь отправить данные с реального устройства, он выдает запрещенную ошибку 403.

это мой код

 doLogins() {
 this.loading = this.loadingController.create({content : "Registering user ..."});
      this.loading.present()
      var url = 'http://services/Registration';

      var officername = this.data.username.trim();
        var officenmae = this.data.office.trim();
        var emal=this.data.email.trim();
        var mobileno=this.data.contact.trim();
        var areode =this.data.areacode;

        var lanlineno=this.data.telno.trim();
        var desgnation= this.data.designation.trim();
        var password=this.data.password.trim();
        var status='A'


     var headers = new Headers()
      headers.append('Content-Type', 'application/x-www-form-urlencoded');

       headers.append('Access-Control-Allow-Origin' , '*');
       headers.append('X-HTTP-Method-Override', 'POST');
       headers.append('Access-Control-Allow-Headers', 'X-Requested-With, X-
     let options = new RequestOptions({ headers: headers });



    let body =  "officname=" +offername + "&emiled=" + email + "&mobilenumber=" + mobileno + "&password=" + password + "&offiname=" + officenmae + 
    "&designation=" + designation +"&landnecode=" + areaode +"&landlinnumber=" + lanlineno +"&status=" + 'A';


           return new Promise(resolve => {
            this.http.post(url, body, options) .map(res => res.json()).subscribe(
                           data => {
                             console.log(data);

                             let toast = this.toastCtrl.create({
                              message: "Registration Success",
                              duration: 3000,
                              position: 'top'
                            });
                            toast.present();
                            setTimeout(() => {
                              this.loading.dismissAll();
                              this.navCtrl.push(LoginPage,{
                                param1: email, param2: password
                            });;
                            }, 2500);

                           },
                           err => {
                             alert(err);
                             this.loading.dismissAll();
                           }
                       );  
         });        
      }

Пожалуйста, предложите мне, где я делаю неправильно. Спасибо


person Harshal Deshmukh    schedule 13.03.2018    source источник
comment
Похоже, вы находитесь в другой сети при тестировании устройства.   -  person Paresh Gami    schedule 13.03.2018
comment
да, я использую ту же сеть   -  person Harshal Deshmukh    schedule 13.03.2018
comment
Ошибка 403 Forbidden исходит от вашего сервера (services/Registration), но я не вижу здесь кода сервера. Вы устанавливаете заголовок Access-Control-Allow-Origin в своем запросе, но он должен быть установлен только в ответе от сервера.   -  person gaborp    schedule 13.03.2018
comment
он отлично работает в Интернете Ionic Serve, тогда я думаю, что это не проблема с сервером @gaborp   -  person Harshal Deshmukh    schedule 13.03.2018
comment
Затем попробуйте получить доступ к службам/регистрации с ЛЮБОГО другого устройства, кроме вашего локального компьютера (например, используйте другой компьютер с ionic serve), и я думаю, вы не получите ожидаемого ответа...   -  person gaborp    schedule 13.03.2018
comment
да, я получаю 403 для мобильного   -  person Harshal Deshmukh    schedule 13.03.2018


Ответы (1)


Создайте на своем сервере в корне запрошенного URL-адреса файл ".htaccess" со следующим содержимым:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Content-Type"
person Lucius    schedule 14.03.2018