Errore Cors su nginx -- Angular

di il
3 risposte

Errore Cors su nginx -- Angular

Ho fatto una web application con frontend in Angular e Bacjend in nodejs.

Ho un problema di CORS, 

la definizione del backend su sites-available è la seguente

server {

        root /var/www/backend/html;

        server_name api.ghisellinimoreno.it;

          location / {

              # reserve proxy
             proxy_pass http://localhost:3001;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header x-Forwarded-Host $host:$server_port;
              proxy_cache_bypass $http_upgrade;

              add_header 'Access-Control-Allow-Origin' '*';
              add_header 'Access-Control-Allow-Credentials' 'true';
              add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
              add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';

       }


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/api.ghisellinimoreno.it/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.ghisellinimoreno.it/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}


server {
    if ($host = api.ghisellinimoreno.it) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



        listen 80;

        server_name api.ghisellinimoreno.it;
    return 404; # managed by Certbot


}

sul backend il file index.js è il seguente

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 || 3001;   // 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');
const socioRouter = require('./routers/socio');
const tesseramentoRouter = require('./routers/tesseramento');
const bandieragiallaRouter = require('./routers/bandieragialla');
const localitaRouter = require('./routers/t-locali');
const sociosearchRouter = require('./routers/sociosearch');
const adesioneconfirmRouter = require('./routers/adesioneConfirm');
const quotatesseraRouter = require('./routers/quotatessera');
const manifRouter = require('./routers/manifestaziones');
const eventoRouter = require('./routers/eventos');
const tipobigliettoRouter = require('./routers/t_tipobigliettos');
const logisticaRouter = require('./routers/logisticas');
const logsettoreRouter = require('./routers/logsettores');
const logfilaRouter = require('./routers/logfilas');
const logfilapostiRouter = require('./routers/logfilapostis');
const eventosettfilapostiRouter = require('./routers/eventosettfilapostis');
const eventopostoRouter = require('./routers/eventopostos');
const eventofilaRouter = require('./routers/eventofilas');
const messageRouter = require('./routers/messages');
const prenoteventoNConfirmRouter = require('./routers/prenoteventoNConfirm');
const prenotazeventoRouter = require('./routers/prenotazevento');
const bigliettoRouter = require('./routers/biglietto');
const prenotazeventomasterConfirmRouter = require('./routers/prenotazeventomasterConfirm');
const cassaRouter = require('./routers/cassa');
const cassamovRouter = require('./routers/cassamov');
const regconfRouter = require('./routers/registerConfirm');
const locandinaRouter = require('./routers/locandina');
const wprenotazeventoRouter = require('./routers/wprenotazevento');
const wprenotazeventomasterRouter = require('./routers/wprenotazeventomaster');

const logpostoRouter = require('./routers/logposto');
const wfileRouter = require('./routers/wfile');
const wsettoriRouter = require('./routers/wsettori');

const workFilaRouter = require('./routers/workFila');
const workSettoreRouter = require('./routers/workSettore');
const eventosettorexxRouter = require('./routers/eventosettore');

// ---------------------------------------------------  importo le rotte  -- tabelle correlate
const ruoloRouter = require('./routers/t-ruolos');
const statouserRouter = require('./routers/t_stato_utentes');
const statomanifRouter = require('./routers/t_stato_manifestaziones')
const statoeventoRouter = require('./routers/t_stato_eventos')
const tagliabigliettoRouter = require('./routers/t_taglia_bigliettos')
const statotagliabigliettoRouter = require('./routers/t_stato_taglia_bigliettos')
const statologisticaRouter = require('./routers/t_stato_logisticas')
const tipologisticaRouter = require('./routers/t_tipo_logisticas')
const statobigliettoRouter = require('./routers/t_stato_bigliettos')
const tipopagamentoRouter = require('./routers/t_tipo_pagamentos')
const wEventoTagliaBigliettoRouter = require('./routers/wEventoTagliaBiglietto')
const comunicatoRouter = require('./routers/comunicato')

// work
const elementoRouter = require('./routers/elementos')

// per upload images
const imageRouter = require('./routers/images');


// per il deploy su heroku o altro hosting   2022/04/06

var corsOptions = {
   origin: "https://bandieragialla.ghisellinimoreno.it"
};

const app = express();
// utilizzo i pacchetti
app.use(cors(corsOptions));
app.use(bodyparser.json());
app.use(express.json());

// -----------------------------------------   utilizzo il router

app.use('/api/auth', authRouter);
app.use('/users', userRouter);
app.use('/userlevel', userlevelRouter); 
app.use('/socio', socioRouter);
app.use('/tesseramento', tesseramentoRouter);
app.use('/bangia', bandieragiallaRouter);
app.use('/tlocalita', localitaRouter);
app.use('/sociosearch', sociosearchRouter);
app.use('/adesioneConfirm', adesioneconfirmRouter);
app.use('/quotatessera', quotatesseraRouter);
app.use('/manif', manifRouter);
app.use('/evento', eventoRouter);
app.use('/ttipobiglietto', tipobigliettoRouter);
app.use('/logistica', logisticaRouter);
app.use('/logsettore', logsettoreRouter);
app.use('/logfila', logfilaRouter);
app.use('/logfilaposti', logfilapostiRouter);
app.use('/eventosettfilaposti', eventosettfilapostiRouter);
app.use('/eventoposto', eventopostoRouter);
app.use('/eventofila', eventofilaRouter);
app.use('/eventosettore', eventosettorexxRouter);
app.use('/message', messageRouter);
app.use('/prenoteventoNConfirm', prenoteventoNConfirmRouter);
app.use('/prenotazevento', prenotazeventoRouter);
app.use('/biglietto', bigliettoRouter);
app.use('/prenotazeventomasterConfirm', prenotazeventomasterConfirmRouter);
app.use('/cassa', cassaRouter);
app.use('/cassamov', cassamovRouter);
app.use('/regconf', regconfRouter);
app.use('/locandina', locandinaRouter);
app.use('/wprenotazevento', wprenotazeventoRouter);
app.use('/logposto', logpostoRouter);
app.use('/wfile', wfileRouter);
app.use('/wsettori', wsettoriRouter);
app.use('/workFila', workFilaRouter);
app.use('/workSettore', workSettoreRouter);
app.use('/weventotagliabiglietto', wEventoTagliaBigliettoRouter);
app.use('/wprenotazeventomaster', wprenotazeventomasterRouter);
app.use('/comunicato', comunicatoRouter);

// --------------------------------------------------------- tabelle correlate
app.use('/truolo', ruoloRouter);
app.use('/tstatoutente', statouserRouter);
app.use('/tstatomanifestazione', statomanifRouter);
app.use('/tstatoevento', statoeventoRouter);
app.use('/ttagliabiglietto', tagliabigliettoRouter);
app.use('/tstatotagliabiglietto', statotagliabigliettoRouter);
app.use('/tstatologistica', statologisticaRouter);
app.use('/ttipologistica', tipologisticaRouter);
app.use('/tstatobiglietto', statobigliettoRouter);
app.use('/ttipopagamento', tipopagamentoRouter);

// work
app.use('/elemento', elementoRouter);


// per upload images

app.use('/upload', imageRouter);

// ... 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');
      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 aws ses per invio email`);
  });
  
  console.log('index.js');

il messaggio di errore è:  header CORS “Access-Control-Allow-Origin” mancante. Codice di stato: 502

Mi sembra che su sites-available/backend “Access-Control-Allow-Origin” sia specificato. 

Perchè da errore ?

grazie

Moreno

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte