【发布时间】:2015-10-20 12:27:42
【问题描述】:
我的 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.body 中没有未定义的参数
我无法从节点 js 中的 html 中获取我发布的数据
【问题讨论】:
-
error invalid credentials听起来可能与您的数据库配置有关,与 Ajax 无关。 (也就是说,您正在尝试使用 JSONP 发出 POST 请求,这是不可能的)。 -
那么可以做些什么来发送数据呢?
-
使用 XMLHttpRequest 代替 JSONP。
-
查看here 并搜索
withCredentials。 -
谢谢@robertklep res.body 仍然不包含我发送的数据不知道是什么问题
标签: javascript node.js express cross-domain