2016-11-28 48 views
1

我有我的应用程序在本地计算机上运行,​​它试图连接到我的远程nodeJS/Express服务器。我在远程服务器中设置了标题。允许远程服务器接受来自本地主机的带有参数的请求

主要问题:如何让我的远程服务器接受来自本地主机的带参数的请求?人们告诉我,我的请求不起作用,因为请求的URL和服务器URL不共享相同的域。该请求来自我的本地主机,它试图访问我的远程节点/快递服务器。 当我在请求中删除参数时,此事务有效,但当我有参数时不起作用。

这是怎么了我在远程服务器上设置头接受所有请求:

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(); 
}); 

此外,res.headersSent不断评估,以虚假的,即使我可以看到在我的谷歌网络选项卡中设置的标头。为什么这个值返回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

我觉得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. 

所有的解决方案,说要添加/设置页眉和你可以看到我已经做到了,但我的应用程序仍然给了我同样的错误,当我包括在请求参数。我应该做什么不同?

+0

你确定头文件正在接收?你在浏览器中看到预检请求吗?客户端的流量是什么样的? – ssube

+0

@ssube如何检查标题是否被接收? –

+0

什么是错误或回应? –

回答

0

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

相关问题