jquery - POST AJAX 请求被拒绝 - CORS?

标签 jquery ajax node.js post cors

我在 node.js 服务器上的 5000 端口上设置了 CORS,如下所示:

var app = express();

app.use(cors()); //normal CORS
app.options('*', cors()); //preflight 

app.post('/connect', function(req, res) { 
    console.log("Connection request received !")
});

var port = 5000;
app.listen(port, function () {
    console.log('Listening on port '+port);
});

我现在正尝试使用 JQuery 在从我的硬盘打开的静态网页中发送 AJAX POST 请求:

var xhr = $.post({
            url: 'http://localhost:5000/connect',
            complete: function() {
                console.log("done !")
            },
            crossDomain: true
        });

xhr.fail(function(xhr, status, error){
    alert(error)
})

永远不会调用 complete 函数,我得到的唯一警报是来自 XHR fail 处理程序的警报,其中包含以下错误:

NS_ERROR_DOM_BAD_URI: Access to restricted URI denied

我认为 CORS 配置良好,我缺少什么?


编辑:就我而言,我能找到的最佳解决方案是从服务器发送页面:

app.use(express.static('web'))

app.get("/", function(req, res) {
    res.sendFile(__dirname + '/web/HTML/index.html');
});

最佳答案

这是我正在使用的代码。它位于我的 app.js 文件中

app.all("/*", function (req, res, next) {

  res.header("Access-Control-Allow-Origin", req.headers.origin);
  res.header("Access-Control-Allow-Credentials",true);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Access-Token,X-Key,Authorization,X-Requested-With,Origin,Access-Control-Allow-Origin,Access-Control-Allow-Credentials');
  if (req.method === 'OPTIONS') {
    res.status(200).end();
  } else {
    next();
  }
});

关于jquery - POST AJAX 请求被拒绝 - CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39364076/

相关文章:

jquery - 可以滚动溢出 : hidden in Chrome 38

javascript - jQuery 不更新 CSS 属性

javascript - 如何在发送请求时向 Ajax 响应传递附加参数

javascript - 弹出表单数据不插入数据库

javascript - 在等待上下文中使用 jest 模拟导入函数

node.js - 如何将 Azure Httptrigger 连接到网站?

php - 从ajax和php插入到mysql

javascript - tablesorter header 设置为 sort false,但仍然排序

javascript - AJAX请求JSON有两种方式

asynchronous - Node.js TCP 客户端命令/响应