【问题标题】:ionic 3 angular http.post connection refused from firebasefirebase 拒绝 ionic 3 angular http.post 连接
【发布时间】:2018-07-30 20:49:04
【问题描述】:

我在 firebase 静态主机上部署了一个 ionic 3 angular 应用程序。有问题的部分看起来像:

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 是亚马逊 ec2 托管的 REST 服务。这失败并出现错误: url 状态为 0 的响应: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

我在 Oracle 计算基础服务器上进行了另一个部署。这工作得很好。该服务器上的请求如下所示:

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

【问题讨论】:

  • 听起来登录凭据是错误的。如果您确定它们是正确的,请尝试清除浏览器缓存/cookies...还有您使用的是什么版本的 Firebase。这可能会有所不同..firebase.google.com/docs/auth - 在这里阅读脚注...你设置好你的项目了吗? console.firebase.google.com/?pli=1
  • 完全不涉及安全性

标签: angular firebase amazon-ec2 ionic3


【解决方案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';

记得重启你的应用

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2018-02-25
    • 2016-12-07
    • 2019-08-02
    • 2017-08-08
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多