ionic 3 угловое соединение http.post отказано в firebase

У меня есть приложение ionic 3 angular, развернутое на статическом хостинге firebase. рассматриваемая часть выглядит так:

var data = {"message" : time,
                                "user_id" : user};
      return new Promise((resolve, reject) => {
        this.http.post(this.apiUrl+'/push', JSON.stringify(data))
          .subscribe(res => {
            resolve(res);
          }, (err) => {
                    alert('error:' + err);
            console.log('error is:' +  err);
            reject(err);
          });
      });

apiUrl — это служба REST, размещенная на Amazon ec2. Это не удается с ошибкой: ответ со статусом 0 для URL: null и более подробные журналы консоли показывают:

POST https://ec2-XXX-XXX.compute-1.amazonaws.com/push net::ERR_CONNECTION_REFUSED

Заголовки запроса выглядят так:

Request URL:https://ec2-XX-XXX-XX.compute-1.amazonaws.com/push
Referrer Policy:no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
content-type:text/plain
Origin:https://myapp.firebaseapp.com
Referer:https://myapp.firebaseapp.com/
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

У меня есть другое развертывание на базовом сервере вычислений оракула. там это работает нормально. Запрос на этом сервере выглядит следующим образом:

Request URL:http://ec2-XX-XXX-XX.compute-1.amazonaws.com/push
Request Method:POST
Status Code:200 OK
Remote Address:34.228.152.99:80
Referrer Policy:no-referrer-when-downgrade
Response Headers
 (12)
Request Headers
view source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:39
content-type:text/plain
Host:ec2-XX-XXX-XX.compute-1.amazonaws.com
Origin:http://my-server-ip
Referer:http://my-server-ip/osc/
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

person Vik    schedule 26.07.2017    source источник
comment
Похоже, что учетные данные для входа неверны. Если вы уверены, что они верны, попробуйте очистить кеш/куки браузера... Также какую версию Firebase вы используете. Это, возможно, может иметь значение. сноска здесь... А вы уже настроили свой проект? console.firebase.google.com/?pli=1   -  person JGFMK    schedule 26.07.2017
comment
Безопасность вообще не при чем   -  person Vik    schedule 27.07.2017


Ответы (1)


Скорее всего, это проблема CORS, у вас могут быть предупреждения в инспекторе браузера при запуске функции.

Вам нужен файл на верхнем уровне с именем poxy.conf.json и заполните его чем-то вроде этого

{
  "/api/*": {
    "target": "https://xxxx.com",
    "secure": true,
    "pathRewrite": {
      "^/api": ""
    },
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

а затем в вашей функции сделать

let params = new HttpParams();
params = params.append('name', encodeURI(name));
params = params.append('email', encodeURI(email));

this._http.get('/api/mypageorfolder', { params: params }).subscribe(
 data => {
 //console.log("data",data);
});

Итак, вы делаете строку запроса для https://xxxx.com/mypageorfolder/?name=&email=

И ссылаясь

import { HttpParams, HttpClient } from '@angular/common/http';
import {RequestOptions, Request, Headers } from '@angular/http';

Не забудьте перезапустить приложение

person PHILL BOOTH    schedule 30.07.2018