客户端无法访问自己的服务器端点

时间:2017-08-10 08:32:09

标签: javascript angularjs node.js express angular-fullstack

我是一个AngularFullStack项目,我尝试使用以下代码点击我项目的服务器端点,但问题是来自角客户端的调用没有通过一边是nodejs服务器。由于这是我的第一个项目,我几乎不知道可能导致这种奇怪冲突的可能出现的问题。

客户机侧:

$http({
        method: 'POST',
        url: '/api/soapAPIs/soapAPI',
        data: request,
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then(function(response) {
        console.log("response from server is: ", response);
      })
      .catch(function(error) {
        console.log("error in calling server is: ", error);
      });

我已在服务器端安装了CORS,并在app.js中编写了以下代码,但它仍无法正常工作。

服务器App.js

// Setup server
var app = express();
var cors = require('cors');
//add cors to do the cross site requests
app.use(cors());

服务器端点代码:

export function soapAPI(req, res) {
  console.log("SERVER SIDE ", req.body);
  res.status(statusCode).json({"status":"success"});
  res.send();
}

以下是问题:

  1. 如果我尝试点击此/api/soapAPIs/soapAPI之类的nodejs端点,浏览器会显示pending请求,但它永远不会进入服务器。

  2. 当我为端点添加完整的分类网址时,如http:localhost:9000/api/soapAPIs/soapAPI,它会点击端点,但客户端永远不会收到服务器的响应。出于显而易见的原因,我不想在客户端提供完整的机密网址。

  3. 如何解决此问题?如果您需要任何其他代码/信息,请与我们联系。

    修改

    通过使用完整的分类路径,服务器端点被命中,但客户端从未收到其响应。我在浏览器中收到此错误:

    Possibly unhandled rejection: {"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/api/things","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}
    

2 个答案:

答案 0 :(得分:1)

取消注释以下行:

/*mongoose.connect(config.mongo.uri, config.mongo.options);
  mongoose.connection.on('error', function(err) {
  console.error(`MongoDB connection error: ${err}`);
  process.exit(-1); // eslint-disable-line no-process-exit
});
*/

基本上这会导致你的控制器没有返回任何响应,因为你的mongoose模型被引用但是与mongo的连接失败了。

答案 1 :(得分:0)

您必须使用res.send()

发回请求
app.post('/api/soapAPIs/soapAPI',function(req,res){
  console.log("SERVER SIDE ", req.body);
  res.status(statusCode).json({"status":"success"}}); 

  res.send();

})