无法在Ionic2中的nodejs服务器中将JSON文件发送到nodejs服务器



我正在使用ionic2将请求发送到本地nodejs服务器,但是问题是,除非我将标题Content-Type设置为application/x-www-form-urlencoded,否则该请求不会触及服务器然后到达的身体不是JSON文件。这是我的Ionic2代码

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  constructor(public navCtrl: NavController, public http: Http) {}
  send(){
    let headers = new Headers({
      // 'Content-Type': 'application/json'
      'Content-Type': 'application/x-www-form-urlencoded'
    });
    let body = {a: 'b'};
    this.http.post('http://localhost:8010/api/test', body, {headers: headers})
      .map(res => res.json())
      .subscribe(data => {
        console.log('response11: ', data);
      }, err => {
        console.log('ERR: ', err);
      });
  }
}

在带有(click)='send()'

的按钮内发送了发送

这是我的服务器代码:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.post('/api/test', function(req, res){
    console.log(req.body);
    res.send('from nodejs');
});
app.listen(8010);
console.log('listening on port 8010...');

当我将该请求的主体打印到按下这样打印的控制台

{ '{n  "a": "b"n}': '' }

现在,如果我将Content-Type更改为 application/json,服务器没有记录任何内容,而离子页面显示错误,则使用状态0

那么,发送HTTP帖子或从Ionic2获取节点服务器的请求的正确方法是什么?

我相信您正在面临CORS问题。通过在服务器上执行以下操作在服务器上启用CORS:

const cors = require("cors");
  const originsWhitelist = [
        "http://localhost:8100"
      ];
      const corsOptions = {
        origin: function (origin, callback) {
          var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
          callback(null, isWhitelisted);
        },
        credentials: true
      };
      //here is the magic
      app.use(cors(corsOptions));

相关内容

  • 没有找到相关文章

最新更新