修改MongoDB以允许跨来源请求

Modifying MongoDB to allow cross origin requests

本文关键字:请求 许跨 MongoDB 修改      更新时间:2023-10-31

我对MongoDB比较陌生,所以我仍然习惯它。

目前,我正试图使用下面的javascript代码从客户端向mongo发布一个json对象。

var addUserButton = document.getElementById('add-user');
var userNameInput = document.getElementById('name');
addUserButton.onclick = function() {
    var newUser = new Object();
    newUser.name = userNameInput.value;
    var newUserJson = { 'name': newUser.name};
    $.post('127.0.0.1:27017/test', newUserJson);
};

当我运行这个代码时,我会收到错误声明:

XMLHttpRequest无法加载%3127.0.1:27017/test。交叉源请求只支持协议方案。。。etc

我读到这篇文章,想知道在mongoDB中添加以下CORS处理程序是否可以解决这个问题。如果它是正确的,我该如何将它添加到MongoDB中?我找不到关于如何将这个CORS处理程序添加到mongo 的文档

function handleCors(req, res, callback) {
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE,OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Authorization');
    // CORS OPTIONS request, simply return 200
    if (req.method == 'OPTIONS') {
        res.statusCode = 200;
        res.end();
        callback.onOptions();
        return;
    }
    callback.onContinue();
};

您的工作在概念上存在问题。

  1. 您的post方法直接命中了这里的TCP协议,这不应该是
  2. 您应该基于服务器中的一些Rest API调用一些http请求
  3. 在服务器路由时,您应该处理CORS(http请求),然后数据库层方法应该获得更新/选择等的数据

顺便说一句,对于服务器路由,您可以使用像expressjs这样的高级节点框架。

如果你想要一个完整的例子,你可以浏览一下解释可以在Angular.js、Node.js和MongoDB的单页应用程序中找到。