离子3 - POST数据到Heroku端点

时间:2017-07-05 17:24:23

标签: node.js heroku ionic-framework ionic3

所以我在端点https://sample.herokuapp.com/上的Heroku上运行了后端服务。我正在尝试将以下JSON对象发布到/bug/端点:

{
    "email": "email@gmail.com",
    "name": "Anthony",
    "text": "Test Bug",
    "picture": "Empty"
}

如果我在 Insomnia Postman 中发布此数据,它将完美运行并返回带有解析信息的HTML响应。但是,当我使用Ionic 3中的以下代码发布此数据时,

sendMail(type:string, text:string):void {
            this.nativeStorage.getItem('sample').then((sample) => {
                  var data = new Object();
                  data["name"] = sample.name
                  data["email"] = sample.email;
                  data["picture"] = sample.picture;
                  data["text"] = text;

                  this.db.object('/general/sample').take(1).subscribe((sample) => {
                        var xhr = new XMLHttpRequest();
                        var endpoint = sample.address + sample.endpoints[type];

                        xhr.addEventListener("readystatechange", function () {
                        if (this.readyState === 4) {
                            console.log("Got response: " + this.responseText);
                        }
                    });

                        xhr.open("POST", endpoint);
                        xhr.setRequestHeader("Accept", "application/json");
                    xhr.setRequestHeader("Content-Type", "application/json");
                        console.log("sample sending: " + JSON.stringify(data, undefined, 2));
                        console.log("sample endpoint: " + endpoint);

                    xhr.send(JSON.stringify(data));
                  })
            })
    }

我在Heroku中收到以下错误日志:

2017-07-05T17:02:24.707431+00:00 heroku[router]: at=info method=OPTIONS path="/bug" host=sample.herokuapp.com request_id=5e679c8e-cac7-4ff2-9277-dec80a250c11 fwd="150.108.242.198" dyno=web.1 connect=1ms service=3ms status=200 bytes=215 protocol=https

我在这个问题上做了很多研究,我相信这是一个CORS问题。但是,我尝试使用Access-Control-Allow-...标头来解决此问题,但一直收到相同的错误。

我已安装Cordova whitelist插件,并将meta标记添加到我的index.html

这是一个非常复杂的问题,所以我感谢所有的帮助!

1 个答案:

答案 0 :(得分:1)

在heroku方面,您是否配置了cors?

 var app = express();
 /* cors conig */
 var corOptions = {
     "origin": "*",
     "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
     "preflightContinue": true,
     allowedHeaders:  'Content-Type,Authorization,X-Requested-With'
 }
 app.use(cors(corOptions));

我的角色依赖:“cors”:“^ 2.8.1”