允许远程服务器接受来自带有params的localhost的请求

时间:2016-11-28 16:45:43

标签: javascript node.js database express cors

我的应用程序在我的计算机上本地运行,它正在尝试连接到我的远程nodeJS / Express服务器。我在远程服务器中设置了标题。

主要问题:如何让我的远程服务器接受来自我的localhost的带参数的请求?人们告诉我,我的请求无效,因为请求的URL和服务器URL没有共享同一个域名。请求来自我的localhost,它正在尝试访问我的远程节点/快速服务器。 当我删除请求中的参数时,此事务有效但当我有参数时不起作用。

这是我在远程服务器中设置标头以接受所有请求的方式:

app.use(function (req, res, next) {
  res.setHeader("Access-Control-Allow-Origin", "http://localhost:9000");
  res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

  if(res.headersSent) {
    console.log("Headers sent");
  }
  else {
    console.log("Headers not sent");
  }
  next();
});

此外,即使我可以在Google网络标签中看到标题设置,res.headersSent也会继续评估为假。为什么这个值返回false?

这就是我从localhost向我的服务器发出GET请求的方式:

var req = $http({
        url: 'https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message',
        method: 'GET',
        cache: false,
        params: {last_updated: last_updated_time}
    });

这篇文章没有帮助How to enable cross-origin resource sharing (CORS) in the express.js framework on node.js

我认为params导致错误,因为当我把它拿出来时它工作正常。我收到这个错误:

XMLHttpRequest cannot load https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message?last_updated=0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 502.

所有解决方案都说要添加/设置标题,你可以看到我已经这样做但是当我在请求中包含params时,我的应用程序仍然给出了同样的错误。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这意味着您的问题是当您向请求添加params时,服务器端代码会引发错误。你需要调试它。 CORS的东西几乎肯定无关紧要。

这个问题不是CORS问题,它与我的params请求有关。要解决这个问题,我必须像这样配置body-parser:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

这有助于从服务器向客户端发送JSON数据,反之亦然。您可以在此处找到更多信息:http://junerockwell.com/difference-parameters-query-strings-express-js/