Ho finito di personalizzare la mia VPS in cui ho scaricato la web application per l'Associazione di volontariato in cui dedico il mio tempo.
la VPS funge da reserve proxy dovendo gestire sia il frontend che il backend. Utilizzo il sistema operativo nginx
l'applicazione utilizza Angular come frontend, Nginx come backende e Mysql come database.
Mi viene segnalato come errore Cors "header CORS “Access-Control-Allow-Origin” mancante. Codice di stato: 502" anche se sul file index.js esiste la definizione.
index.js
const express = require('express');
const bodyparser = require('body-parser');
const cors = require('cors');
const mysql = require('mysql2');
// porta per mysql
const ports = process.env.PORT || 3000; // info relative all'ambiente di esecuzione
global.__basedir = __dirname; // va aprendere la cartella corrente
// importo la connessione al db
const db = require('./db');
// --------------------------------------------------- importo le rotte
const authRouter = require('./routers/api/auth');
const userRouter = require('./routers/user');
const userlevelRouter = require('./routers/userlevels');
...... altre tabelle
var corsOptions = {
// per ambiente di produzione su Aruba
origin: "https://bandieragialla.ghisellinimoreno.it",
credentials: "true",
methods: "GET, POST, PUT, DELETE, OPTIONS",
headers: "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,Origin,Options"
};
const app = express();
// utilizzo i pacchetti
app.use(cors(corsOptions));
app.use(bodyparser.json());
app.use(express.json());
..... altre tabelle
// ----------------------------------------- utilizzo il router
// ... Va inserito come ultima rotta
app.use(function(req, res, next){
// res.setHeader('Content-Type', 'text/plain');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// res.status(404).send('La pagina non esiste amico!');
next();
});
// nuova modalità
app.listen(ports,() => {
console.log(`Server sta girando sulla porta ${ports} -- credenziali Aruba per invio email`);
});
console.log('index.js');
db.js
const config = require("./config.json");
const mysql = require('mysql2');
// originale per sviluppo su localhost
const Sequelize = require('sequelize')
const sequelize = new Sequelize(
config.database,
config.user,
config.password,
{
host: config.host,
dialect: config.dialect,
operatorsAliases: 0,
pool: {
max: config.pool.max,
min: config.pool.min,
acquire: config.pool.acquire,
idle: config.pool.idle
}
}
);
let db;
// ambiente di Produzione
if(process.env.CLEARDB_DATABASE_URL) {
db = mysql.createConnection(process.env.CLEARDB_DATABASE_URL)
} else {
db = mysql.createPool({ // mysql.createConnection
connectionLimit: 100,
host: config.host,
user: config.user,
password: config.password,
database:config.database,
port:config.port,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,
debug: false
});
}
// Attempt to catch disconnects
db.on('connection', function (connection) {
console.log('DB Connection established');
connection.on('error', function (err) {
console.error(new Date(), 'MySQL error', err.code);
});
connection.on('close', function (err) {
console.error(new Date(), 'MySQL close', err);
});
});
// creo connessione a mysql con pool
let pool;
pool = mysql.createPool({
connectionLimit: 300,
host: config.host,
user: config.user,
password: config.password,
database:config.database,
port:config.port,
waitForConnections: true, // inizio integrazione di Hidran
connectionLimit: 10,
queueLimit: 0,
idleTimeout: 10000 // Connessioni inattive vengono chiuse dopo 10 secondi
});
// -------------------------------------------------------------------------------- fine ambiente di Produzione EC2
db.Sequelize = Sequelize;
db.sequelize = sequelize;
// model di tutte le tabelle utilizzate
db.user = require("./models/user.js")(sequelize, Sequelize);
db.socio = require("./models/socio.js")(sequelize, Sequelize);
db.userlevel = require("./models/userlevel.js")(sequelize, Sequelize);
..... altre tabelle
module.exports = db;
va in errore header CORS “Access-Control-Allow-Origin” mancante. Codice di stato: 502 anche se il parametro in index.js è stato inserito.
cosa manca o casa è stato scritto in maniera errata ?
grazie
Moreno