javascript - 允许远程服务器接受来自本地主机的带有参数的请求

标签 javascript node.js database express http-status-code-502

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

主要问题:我如何允许我的远程服务器接受来 self 的本地主机的带有参数的请求?人们告诉我,我的请求将不起作用,因为请求的 URL 和服务器 URL 不匹配共享相同的域。该请求来 self 的本地主机,它正在尝试访问我的远程 Node/express 服务器。 当我删除请求中的参数时,此事务有效,但当我有参数时,此事务无效。

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

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 网络选项卡中设置的 header ,res.headersSent 的计算结果仍为 false。为什么这个值返回 false?

这就是我从本地主机向服务器发出 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

我认为参数导致了错误,因为当我将其取出时它工作正常。我收到此错误:

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.

所有解决方案都说要添加/设置 header ,正如您所看到的,我已经这样做了,但是当我在请求中包含参数时,我的应用程序仍然给出相同的错误。我应该采取什么不同的做法?

最佳答案

这意味着您的问题是,当您向请求添加参数时,服务器端代码会抛出错误。你需要调试它。 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/

关于javascript - 允许远程服务器接受来自本地主机的带有参数的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849406/

相关文章:

javascript - 递归构建器嵌套问题

javascript - 将对象传递给原型(prototype)回调

node.js - 为什么 Node JS 有 4 个版本?

database - 生产环境上的 Laravel 4.x 迁移

javascript - 您如何检测异步 couchdb 事件的完成?

node.js - Node/Express JS "Cannot read property ' 用户名'未定义”

node.js - 如何更改 NPM 的包源

android - 需要 Android 客户端/服务器数据库教程

mysql - 除了 API 端点之外,是否还有其他方法可以进入后端?

javascript - Chart.js 折线图中的数据无法正确显示