无法让cors为我的生活工作

问题描述 投票:0回答:1

这是我第一次使用 cors 和 node.js,我尝试从另一个 URL 调用托管在一个 URL 上的 Web API。

我什至无法让 cors 简单地工作

app.use(cors());

我尝试了更复杂的配置和起源之类的,但仍然没有运气。

API 位于 https://api.example.app 上,并从 https://myapp.example.app

调用

我收到各种 cors 错误。

注意,我还使用 CloudFlare 和 Nginx 代理管理器

此外,我可以访问 https://api.example.app/select 并以这种方式毫无问题地取回我的数据。但这是唯一可行的方案。

var express = require('express');
var mysql = require('mysql');
var cors = require('cors');
var app = express();
var port = 3333;

app.use(express.text());

app.use(cors());

var pool = mysql.createPool({
    connectionLimit: 10,
    host: '192.168.1.200',
    port: 3306,
    user: 'user',
    password: 'password',
    database: 'mydb'
});

app.get('/select', (req, res) => {
    pool.query('SELECT * FROM mytable', (error, results, fields) => {
        if (error) {
            console.error('Error retrieving data:', error);
            return res.status(500).send('Failed to retrieve data from database');
        }
        console.log('Data retrieved successfully:', results);
        res.status(200).json(results);
    });
});

app.post('/insert', (req, res) => {
    var string = req.body;

    console.log(req.body);

    if (!string) {
        return res.status(400).send('String is required');
    }

    pool.query('INSERT INTO mytable(user) VALUES (?)', string, (err, results) => {
        if (err) {
            console.error('Error inserting string into database:', err);
            return res.status(500).send('Failed to insert string into database');
        }

        console.log('String inserted successfully');
        return res.status(200).send('String inserted successfully');
    });
});

app.listen(port, () => {
    console.log(`Server is running on http://192.168.1.200:${port}`);
});

Errors with the current config above.

node.js express cors cloudflare
1个回答
0
投票

如果我错了,请纠正我,但我的 COR 配置不只是“app.use(cors());”据我所知,这只允许发生任何跨站点操作?

不。它将 CORS 标头添加到响应(包括飞行前请求)中。它使用默认配置,默认情况下阻止跨源请求。

您可以配置允许的来源以允许您的其他来源。

const corsOptions = {
  // origin: false, //disable CORS origin checking
  origin: [ //specify list of allowed origins
    'https://myapp.example.app',
    'https://api.example.app',
  ],
};

app.use(cors(corsOptions));
© www.soinside.com 2019 - 2024. All rights reserved.