所以我有一个重大问题。我需要从我构建的一个小node.js服务器获取数据,然后使用该数据。我遇到的问题是错误说我不能做跨域请求,从我看到我需要添加一个标题。我已经看到很多方法来解决这个问题,但他们都使用快递。我试图远离快递,因为我在一个沙盒主机,并没有办法添加快递。
- 服务器代码 -
ContainerTableViewController
- 客户端功能 -
var http = require('http'),
url = require('url');
var tweets = {"tweets":[]};
http.createServer(function (req, res) {
query = url.parse(req.url,true).query;
var response = {};
//res.end(JSON.stringify(query));
if(query.action){
console.log("Moving on to phase two!");
if(query.action === "read") {
console.log("Listing off the posts");
response = tweets;
}
else {
if(query.action === "post"){
if(query.message) {
var tweet = {};
tweet.message = query.message;
tweets.tweets.push(tweet);
response.stat = "All Good!";
}
}
}
} else {
response.error = "No Action";
}
response.url = req.url;
res.write(JSON.stringify(response));
console.log(JSON.stringify(response));
res.end();
}).listen();
我希望这将是一个不容易做到的简单修复。
答案 0 :(得分:1)
在将响应发送回客户端之前,您可以使用res.header
设置CORS标头,如下所示 -
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
希望它有所帮助。
答案 1 :(得分:1)
我已经弄明白了我需要做什么。我试着跑步
res.setHeader("Access-Control-Allow-Origin", "*");
它有效!除了错误之外,其他方法都没有做任何事情。谢谢你试图帮我回答这个问题。
答案 2 :(得分:0)
您需要在服务器上启用CORS。
如果您使用expressjs,则会有一个中间件调用cors。只需使用app.use(require('cors'))
就可以了。