Perché l'aggiunta delle intestazioni CORS a una route OPTIONS non consente ai browser di accedere alla mia API?


653

Sto cercando di supportare CORS nella mia applicazione Node.js che utilizza il framework Web Express.js. Ho letto una discussione di gruppo di Google su come gestirlo e ho letto alcuni articoli su come funziona CORS. Innanzitutto, l'ho fatto (il codice è scritto nella sintassi CoffeeScript):

app.options "*", (req, res) ->
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  # try: 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
  # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

Non sembra funzionare. Sembra che il mio browser (Chrome) non stia inviando la richiesta OPTIONS iniziale. Quando ho appena aggiornato il blocco per la risorsa, devo inviare una richiesta GET tra origini a:

app.get "/somethingelse", (req, res) ->
  # ...
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

Funziona (in Chrome). Questo funziona anche in Safari.

Ho letto che ...

In un browser che implementa CORS, ogni richiesta GET o POST di origine incrociata è preceduta da una richiesta OPTIONS che controlla se GET o POST sono corretti.

Quindi la mia domanda principale è: come mai questo non sembra accadere nel mio caso? Perché il mio blocco app.options non viene chiamato? Perché devo impostare le intestazioni nel mio blocco app.get principale?


2
La regola d'oro di CoffeeScript è: "È solo JavaScript".
SSH Questo

Risposte:


185

Per rispondere alla domanda principale, le specifiche CORS richiedono solo la chiamata OPTIONS per precedere il POST o GET se il POST o GET contiene contenuti o intestazioni non semplici.

I tipi di contenuto che richiedono una richiesta pre-volo CORS (la chiamata OPTIONS) sono qualsiasi tipo di contenuto tranne i seguenti :

  1. application/x-www-form-urlencoded
  2. multipart/form-data
  3. text/plain

Qualsiasi altro tipo di contenuto diverso da quelli sopra elencati attiverà una richiesta pre-volo.

Per quanto riguarda le intestazioni, tutte le intestazioni di richiesta oltre a quanto segue attiveranno una richiesta pre-volo:

  1. Accept
  2. Accept-Language
  3. Content-Language
  4. Content-Type
  5. DPR
  6. Save-Data
  7. Viewport-Width
  8. Width

Qualsiasi altra intestazione richiesta attiverà la richiesta pre-volo.

Quindi, è possibile aggiungere un'intestazione personalizzata come:, x-Trigger: CORSche dovrebbe attivare la richiesta pre-volo e premere il blocco OPTIONS.

Vedere Riferimento API Web MDN - Richieste preflight CORS


11
Potete fornire un esempio?
Glen Pierce,

3
La pagina a cui mi sono collegato sembra avere un numero di esempi. Potresti dirmi quale esempio pensi che manchi?
Dobes Vandermeer,

7
In generale, tuttavia, le risposte solo link sono fragili perché potrebbero, in qualsiasi momento, essere infrante. Detto questo, questa risposta sembra abbastanza buona in quanto evidenzia le condizioni generali in cui i OPTIONSblocchi non vengono inviati. Sarebbe bello se avesse l'elenco di accettato HEADERS, o che content-typesrichiedono OPTIONS, ecc., Ma è un buon inizio
dwanderson,

668

Ho trovato il modo più semplice è quello di usare il pacchetto Node.JS cors . L'utilizzo più semplice è:

var cors = require('cors')

var app = express()
app.use(cors())

Esistono, ovviamente, molti modi per configurare il comportamento in base alle proprie esigenze; la pagina collegata sopra mostra una serie di esempi.


1
Non riesce per me quando lo uso con le credenziali. :( Tutto il resto ha funzionato come un fascino .. Ma non mi serve a niente se fallisce con Credenziali impostate su true
Sambhav Sharma,

Funziona benissimo per la richiesta Ajax. Voglio l'implementazione di CORS per i tag script e iFrame perché in queste richieste l'origine non è presente nell'intestazione della richiesta :( Come implementarlo?
AkashPatra

59
Devi anche impostarecors({credentials: true, origin: true})
nlawson il

2
come si abilitano le opzioni di verifica preliminare qui?
Chovy

1
Questo non funziona a partire da luglio 2020
FactorialTime

446

Prova a passare il controllo al prossimo percorso corrispondente. Se Express corrisponde prima al percorso app.get, non continuerà sul percorso opzioni a meno che non lo faccia (nota l'uso del prossimo) :

app.get('somethingelse', function(req, res, next) {
    //..set headers etc.

    next();
});

In termini di organizzazione del materiale CORS, lo inserisco in un middleware che funziona bene per me:

//CORS middleware
var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'example.com');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');

    next();
}

//...
app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: 'cool beans' }));
    app.use(express.methodOverride());
    app.use(allowCrossDomain);
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

1
Credo che le OPZIONI avvengano prima di un OTTENERE, mentre se stai facendo un POST - non c'è richiesta di OPZIONI ...
Nick,

21
È config.allowedDomainsuna stringa delimitata da virgole o una matrice?
pixelfreak,

2
config.allowedDomains dovrebbe essere un array separato da spazi
mcfedr

1
La sessione extra è stata rimossa semplicemente riorganizzando l'ordine del middleware espresso. In un'altra nota, ciò richiede un po 'più di sicurezza. se l'origine non si trova nel dominio consentito, la richiesta viene comunque elaborata, solo il browser non sarà in grado di vederlo e l'origine può essere falsificata. Il mio consiglio sarebbe di fare un controllo e se l'origine non è nell'elenco consentito, restituire immediatamente 403. Inoltre viene fornita qualsiasi informazione sensibile, convalidare l'utente tramite una sessione.
Xerri,

1
@mcfedr Potresti spiegare cosa intendi per array separato da spazi?
pootzko,


84

fare

npm install cors --save

e aggiungi semplicemente queste righe nel tuo file principale dove va la tua richiesta (mantienila prima di qualsiasi percorso).

const cors = require('cors');
const express = require('express');
let app = express();
app.use(cors());
app.options('*', cors());

3
app.options('*', cors())// include prima di altre rotte
Rajeshwar,

52

Ho creato un middleware più completo adatto per express o connect. Supporta le OPTIONSrichieste di verifica preliminare. Si noti che consentirà l'accesso CORS a qualsiasi cosa, si consiglia di effettuare alcuni controlli se si desidera limitare l'accesso.

app.use(function(req, res, next) {
    var oneof = false;
    if(req.headers.origin) {
        res.header('Access-Control-Allow-Origin', req.headers.origin);
        oneof = true;
    }
    if(req.headers['access-control-request-method']) {
        res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']);
        oneof = true;
    }
    if(req.headers['access-control-request-headers']) {
        res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
        oneof = true;
    }
    if(oneof) {
        res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365);
    }

    // intercept OPTIONS method
    if (oneof && req.method == 'OPTIONS') {
        res.send(200);
    }
    else {
        next();
    }
});

Ehi, ho trovato la tua soluzione e mi chiedevo se la bandiera "oneof" dovesse essere impostata come falsa se una delle intestazioni non fosse stata rilevata?
Leonidas,

1
Alcune richieste non avranno tutte le intestazioni. Nello specifico, il browser invierà una richiesta GET e quando non ottiene una risposta di origine originale corretta, viene dato un errore a js. Considerando che per una richiesta POST, la richiesta OPTIONS viene prima inviata, con l'intestazione del metodo allow, e solo successivamente verrà inviata la richiesta POST effettiva.
McFedr,

1
Ah, capisco. Grazie. Ti sei mai imbattuto in problemi non inserendo res.send (200) se il metodo req era "opzioni"?
Leonidas,

Non credo di aver provato a inviare qualcos'altro, immagino che qualsiasi altra risposta provocherà il rifiuto da parte del browser della richiesta di preflight.
McFedr,

funziona come per incanto, aggiungerei semplicemente un elenco di domini autorizzati per maggiore sicurezza
Sebastien H.

37

installa il modulo cors di expressjs. puoi seguire questi passaggi>

Installazione

npm install cors

Utilizzo semplice (abilita tutte le richieste CORS)

var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());

per maggiori dettagli vai a https://github.com/expressjs/cors


2
TypeError: Cannot read property 'headers' of undefinedLa configurazione dell'app di base.
Oliver Dixon,

Sei sicuro di avere un oggetto richiesta? :)
codice

33

Fai qualcosa del genere:

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

20

Test eseguiti con express + node + ionic running in porte diverse.

Localhost:8100

Localhost:5000

// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests

app.all('*', function(req, res, next) {
       res.header("Access-Control-Allow-Origin", "*");
       res.header("Access-Control-Allow-Headers", "X-Requested-With");
       res.header('Access-Control-Allow-Headers', 'Content-Type');
       next();
});

2
In quale file dobbiamo aggiungere queste righe?
Shefalee Chaudhary,

20

prima installa semplicemente cors nel tuo progetto. Prendi terminal (prompt dei comandi) e cdnella directory del progetto ed esegui il comando seguente:

npm install cors --save

Quindi prendere il file server.js e modificare il codice per aggiungere quanto segue in esso:

var cors = require('cors');


var app = express();

app.use(cors());

app.use(function(req, res, next) {
   res.header("Access-Control-Allow-Origin", "*");
   res.header('Access-Control-Allow-Methods', 'DELETE, PUT, GET, POST');
   res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
   next();
});

Questo ha funzionato per me ..


4
Non è necessario corsse stai facendo le res.headercose. corsè una libreria che gestisce tutto ciò per te. Elimina la tua prima e terza riga (AKA tutto con cors) e scoprirai che funziona ancora.
thisissami,

diamine sono abbastanza sicuro che tutto ciò di cui hai veramente bisogno è questa lineares.header("Access-Control-Allow-Origin", "*");
thisissami

tuttavia tieni presente che stai compromettendo la tua sicurezza. :)
thisissami,

10

Questo funziona per me, in quanto è una facile implementazione all'interno delle rotte, sto usando meanjs e funziona bene, safari, chrome, ecc.

app.route('/footer-contact-form').post(emailer.sendFooterMail).options(function(req,res,next){ 
        res.header('Access-Control-Allow-Origin', '*'); 
        res.header('Access-Control-Allow-Methods', 'GET, POST');
        res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
        return res.send(200);

    });

10

Qualche tempo fa, ho riscontrato questo problema, quindi l'ho fatto per consentire CORS nella mia app nodejs:

Innanzitutto è necessario installare cors utilizzando il comando seguente:

npm install cors --save

Ora aggiungi il seguente codice al tuo file di avvio dell'app come ( app.js or server.js)

var express = require('express');
var app = express();

var cors = require('cors');
var bodyParser = require('body-parser');

//enables cors
app.use(cors({
  'allowedHeaders': ['sessionId', 'Content-Type'],
  'exposedHeaders': ['sessionId'],
  'origin': '*',
  'methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
  'preflightContinue': false
}));

require('./router/index')(app);

provato questo dopo aver installato cors. Cors non è una funzione
colin rickels il

9

Nel mio index.jsho aggiunto:

app.use((req, res, next) => {
   res.header("Access-Control-Allow-Origin", "*");
   res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
   res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
   next();
}) 

2
Devo commentare che Access-Control-Allow-Origin = *significa che non sarai in grado di inviare i cookie al server, che saranno respinti dalla politica CORS - fonte: developer.mozilla.org/en-US/docs/Web/HTTP/… . Quindi, non utilizzare questo se si desidera utilizzare i cookie.
Eksapsy,

7

Se vuoi renderlo specifico per il controller, puoi usare:

res.setHeader('X-Frame-Options', 'ALLOWALL');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST, GET');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');

Si noti che ciò consentirà anche iframe.


6

Può fare riferimento al codice seguente per lo stesso. Fonte: Academind / node-restful-api

const express = require('express');
const app = express();

//acts as a middleware
//to handle CORS Errors
app.use((req, res, next) => { //doesn't send response just adjusts it
    res.header("Access-Control-Allow-Origin", "*") //* to give access to any origin
    res.header(
        "Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Accept, Authorization" //to give access to all the headers provided
    );
    if(req.method === 'OPTIONS'){
        res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET'); //to give access to all the methods provided
        return res.status(200).json({});
    }
    next(); //so that other routes can take over
})

Ho visto molte risposte e questo ha qualcosa di importante, ho provato a usare questa parte del codice dopo alcune altre configurazioni e non ha funzionato e per qualche motivo, ho provato a inserire il codice dopo l'app const app = express();e funziona! Penso che sia importante menzionarlo.
rfcabal

4

La mia soluzione più semplice con Express 4.2.0 (EDIT: non sembra funzionare in 4.3.0) era:

function supportCrossOriginScript(req, res, next) {
    res.status(200);
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-Type");

    // res.header("Access-Control-Allow-Headers", "Origin");
    // res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    // res.header("Access-Control-Allow-Methods","POST, OPTIONS");
    // res.header("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE, PUT, HEAD");
    // res.header("Access-Control-Max-Age","1728000");
    next();
}

// Support CORS
app.options('/result', supportCrossOriginScript);

app.post('/result', supportCrossOriginScript, function(req, res) {
    res.send('received');
    // do stuff with req
});

Suppongo che anche app.all('/result', ...)farebbe ...


3

La risposta più semplice è usare semplicemente il pacchetto cors .

const cors = require('cors');

const app = require('express')();
app.use(cors());

Ciò consentirà CORS su tutta la linea. Se vuoi imparare come abilitare CORS senza moduli esterni , tutto ciò di cui hai veramente bisogno è un middleware Express che imposta l' intestazione 'Access-Control-Allow-Origin' . Questo è il minimo necessario per consentire domini su richiesta incrociata da un browser al tuo server.

app.options('*', (req, res) => {
  res.set('Access-Control-Allow-Origin', '*');
  res.send('ok');
});

app.use((req, res) => {
  res.set('Access-Control-Allow-Origin', '*');
});

2

L'uso di Express Middleware funziona perfettamente per me. Se stai già utilizzando Express, aggiungi le seguenti regole del middleware. Dovrebbe iniziare a funzionare.

app.all("/api/*", function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
  res.header("Access-Control-Allow-Methods", "GET, PUT, POST");
  return next();
});

app.all("/api/*", function(req, res, next) {
  if (req.method.toLowerCase() !== "options") {
    return next();
  }
  return res.send(204);
});

Riferimento


2

Di seguito ha funzionato per me, spero che aiuti qualcuno!

const express = require('express');
const cors = require('cors');
let app = express();

app.use(cors({ origin: true }));

Ottenuto riferimento da https://expressjs.com/en/resources/middleware/cors.html#configuring-cors


In quale file va? peanutbutter.js?
Andrew Koper,

non sono sicuro di peanutbutter.js, per me è express.js. in sostanza, dovrebbe essere il file in cui è richiesta l'app express, inizializzarla e richiedere i file di route.
Vatsal Shah,

1

Ho trovato estremamente facile farlo con il pacchetto di richiesta npm ( https://www.npmjs.com/package/request )

Quindi ho basato la mia soluzione su questo post http://blog.javascripting.com/2015/01/17/dont-hassle-with-cors/

'use strict'

const express = require('express');
const request = require('request');

let proxyConfig = {
    url : {
        base: 'http://servertoreach.com?id=',
    }
}

/* setting up and configuring node express server for the application */
let server = express();
server.set('port', 3000);


/* methods forwarded to the servertoreach proxy  */
server.use('/somethingElse', function(req, res)
{
    let url = proxyConfig.url.base + req.query.id;
    req.pipe(request(url)).pipe(res);
});


/* start the server */
server.listen(server.get('port'), function() {
    console.log('express server with a proxy listening on port ' + server.get('port'));
});

1

In dattiloscritto, se si desidera utilizzare il pacchetto cors cors.js

/**
* app.ts
* If you use the cors library
*/

import * as express from "express";
[...]
import * as cors from 'cors';

class App {
   public express: express.Application;

   constructor() {
       this.express = express();
       [..]
       this.handleCORSErrors();
   }

   private handleCORSErrors(): any {
       const corsOptions: cors.CorsOptions = {
           origin: 'http://example.com',
           optionsSuccessStatus: 200
       };
       this.express.use(cors(corsOptions));
   }
}

export default new App().express;

Se non si desidera utilizzare librerie di terze parti per la gestione degli errori cors, è necessario modificare il metodo handleCORSErrors ().

/**
* app.ts
* If you do not use the cors library
*/

import * as express from "express";
[...]

class App {
   public express: express.Application;

   constructor() {
       this.express = express();
       [..]
       this.handleCORSErrors();
   }

   private handleCORSErrors(): any {
       this.express.use((req, res, next) => {
           res.header("Access-Control-Allow-Origin", "*");
           res.header(
               "Access-Control-ALlow-Headers",
               "Origin, X-Requested-With, Content-Type, Accept, Authorization"
           );
           if (req.method === "OPTIONS") {
               res.header(
                   "Access-Control-Allow-Methods",
                   "PUT, POST, PATCH, GET, DELETE"
               );
               return res.status(200).json({});
           } 
           next(); // send the request to the next middleware
       });
    }
}

export default new App().express;

Per l'utilizzo del file app.ts

/**
* server.ts
*/
import * as http from "http";
import app from "./app";

const server: http.Server = http.createServer(app);

const PORT: any = process.env.PORT || 3000;
server.listen(PORT);

1
"Se il server è scritto in dattiloscritto" - Non lo è. La domanda dice che è scritto in CoffeeScript.
Quentin,

1
@Quentin Volevo solo mostrare un'alternativa in dattiloscritto, sperando che questo potesse aiutare qualcuno.
superato il

1

Questo è simile alla risposta di Pat con la differenza che finisco con res.sendStatus (200); invece di next ();

Il codice raccoglierà tutte le richieste del tipo di metodo OPTIONS e invierà le intestazioni di controllo dell'accesso.

app.options('/*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
    res.sendStatus(200);
});

Il codice accetta CORS da tutte le origini come richiesto nella domanda. Tuttavia, sarebbe meglio sostituire * con un'origine specifica, ad es. Http: // localhost: 8080 per evitare l'uso improprio.

Poiché utilizziamo il metodo app.options anziché il metodo app.use, non è necessario effettuare questo controllo:

req.method === 'OPTIONS'

che possiamo vedere in alcune delle altre risposte.

Ho trovato la risposta qui: http://johnzhang.io/options-request-in-express .


1

È possibile utilizzare il middleware Express, bloccare il dominio e i metodi.

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", process.env.DOMAIN); // update to match the domain you will make the request from
  res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
});

Questo mi ha aiutato con il mio problema, grazie!
Fr0zen Ufficiale

0

Possiamo evitare CORS e inoltrare invece le richieste all'altro server:

// config:
var public_folder = __dirname + '/public'
var apiServerHost = 'http://other.server'

// code:
console.log("starting server...");

var express = require('express');
var app = express();
var request = require('request');

// serve static files
app.use(express.static(public_folder));

// if not found, serve from another server
app.use(function(req, res) {
    var url = apiServerHost + req.url;
    req.pipe(request(url)).pipe(res);
});

app.listen(80, function(){
    console.log("server ready");
});

1
questo non risponde alla domanda posta
david.barkhuizen il

0

Ho utilizzato i seguenti passaggi per la mia app Web e ho avuto successo:

Aggiungi il pacchetto cors a express:

npm install cors --save

Aggiungi le seguenti righe dopo la configurazione bodyParser . Ho avuto qualche problema con l'aggiunta prima di bodyParser:

 // enable cors to the server
const corsOpt = {
    origin: process.env.CORS_ALLOW_ORIGIN || '*', // this work well to configure origin url in the server
    methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'], // to works well with web app, OPTIONS is required
    allowedHeaders: ['Content-Type', 'Authorization'] // allow json and token in the headers
};
app.use(cors(corsOpt)); // cors for all the routes of the application
app.options('*', cors(corsOpt)); // automatic cors gen for HTTP verbs in all routes, This can be redundant but I kept to be sure that will always work.

0

L'approccio più semplice è installare il modulo cors nel tuo progetto usando:

npm i --save cors

Quindi nel file del tuo server importalo usando il seguente:

import cors from 'cors';

Quindi utilizzalo semplicemente come middleware come questo:

app.use(cors());

Spero che sia di aiuto!


0

Se fossi in te @OP, cambierei il mio paradigma di programmazione.

supponendo che tu stia bloccando questi CORS perché stai facendo richieste a localhost o qualcosa di simile.

Alla fine, se hai intenzione di implementare optoin di produzione come Google Cloud Platformo Herokuo, non dovrai preoccuparti di CORS come consentire l'origine o qualsiasi altra cosa durante la produzione.

quindi durante il test del server basta usare postmane non si bloccherà CORS, dopodiché distribuire il server e quindi lavorare sul client.


0

/ * prima di tutto, e questo potrebbe essere il problema tra i giovani sviluppatori là fuori, come me: assicurati di usare "lambda" >>>> "` "e non" "nel tuo metodo di recupero ! * /

`` `const response = await fetch ( https://api....);

/ Inoltre, si consiglia vivamente il seguente articolo: https://developer.edamam.com/api/faq /


0

semplice è difficile:

 let my_data = []
const promise = new Promise(async function (resolve, reject) {
    axios.post('https://cors-anywhere.herokuapp.com/https://maps.googleapis.com/maps/api/directions/json?origin=33.69057660000001,72.9782724&destination=33.691478,%2072.978594&key=AIzaSyApzbs5QDJOnEObdSBN_Cmln5ZWxx323vA'
        , { 'Origin': 'https://localhost:3000' })
        .then(function (response) {
            console.log(`axios response ${response.data}`)
            const my_data = response.data
            resolve(my_data)
        })
        .catch(function (error) {
            console.log(error)
            alert('connection error')
        })
})
promise.then(data => {
    console.log(JSON.stringify(data))
})

0

Prova questo nel tuo file js principale:

app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header(
  "Access-Control-Allow-Headers",
  "Authorization, X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Request-Method"
);
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
res.header("Allow", "GET, POST, OPTIONS, PUT, DELETE");
next();
});

Questo dovrebbe risolvere il tuo problema

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.