我正在Node.JS中开发REST Web服务以使用骨干框架.
我已经使用urlRoot定义了一个Person模型:http:// localhost:3000 / users我创建了一个请求处理程序,在接收发布请求时将该人员添加到数据库中.
我已经使用urlRoot定义了一个Person模型:http:// localhost:3000 / users我创建了一个请求处理程序,在接收发布请求时将该人员添加到数据库中.
app.post(‘/ users’,user.add(db));
exports.add = function(db){ return function(req,res){ console.log(req.body); var name = req.body.name; var age = req.body.age; var sex = req.body.sex; var job = req.body.job; var peopleDb = db.get('people'); peopleDb.insert({ 'name':name,'age':age,'sex':sex,'job':job },function(e,docs){ if(e){ console.log(e); }else { res.setHeader('Content-Type','application/json'); res.setHeader('Access-Control-Allow-Origin','*'); res.setHeader('Access-Control-Allow-Methods','GET,PUT,POST,DELETE'); res.writeHead(200); res.end(JSON.stringify(docs)); } }); } }
当我尝试执行代码时,我在控制台中得到了这个:
Access-Control-Allow-Origin不允许使用origin http:// localhost.
我从其他答案中读到添加标题:Access-Control-Allow-Origin:*和Access-Control-Allow-Methods:GET,DELETE可以解决问题,但它对我没用.我也尝试将这些标题放在.htaccess文件中,但没有运气.
解决方法
如果你使用快递,你可以使用
cors软件包来允许CORS,而不是编写你的中间件;
var express = require('express'),cors = require('cors'),app = express(); app.use(cors()); app.get(function(req,res){ res.send('hello'); });