处理跨域ajax post在节点js
handle cross domain ajax post in node js
我的app.js有下面的post处理程序
app.all('/', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
app.options('*', cors());
var allowCrossDomain = function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
next();
};
app.use(allowCrossDomain);
var whitelist = ['http://myurl.net'];
var corsOptions = {
origin: function (origin, callback) {
var originIsWhitelisted = whitelist.indexOf(origin) !== -1; callback(null, originIsWhitelisted);
}
};
app.post('/ValidateUser/users',cors(corsOptions) , function (req, res) {
var db = req.db;
var collection = db.get('userlist');
collection.find({}, {}, function (e, docs) {
res.json(docs);
});
res.send("Hey");
});
调用它的html页面有以下代码
var user = { "bla":"bla" };
function checkUser() {
$.ajax({
type:"POST",
url: 'http://localhost:1337/validateuser/users',
data: user,
crossDomain: true,
dataType:"jsonp"
//jsonp: false,
//jsonpCallback: 'jsonCallback'
}).success(function (data) { console.log(data) });
};
当我保持断点并检查req.body
时,它不具有req中的参数。
我无法获取数据,我是在节点js的html发布
使用body-parser模块获取数据,例如:
server.js:
var express = require('express');
var bodyParser = require('body-parser');
var db = require('./db'); //module that contains db connection config
var app = express();
app.use(bodyParser());
app.get('/', function(req, res) {
res.sendFile('/index.html', {root: __dirname });
});
app.post('/users', function(req, res) {
console.log(req.body); //req.body contains the user = {bla: 'bla'} object
var user = req.body;
var collection = db.get('userlist');
collection.find(user, function (e, docs) {
res.json(docs);
});
res.send("Hey");
});
var server = app.listen(3000, function() {
console.log('listening');
});
index . html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
var user = { "bla":"bla" };
function checkUser(data) {
$.ajax({
type:"POST",
url: 'http://localhost:3000/users',
data: data,
dataType: "json"
}).success(function (data) { console.log(data) });
};
checkUser(user);
</script>
</body>
</html>
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”