No está presente 'Acceso-Control-Permitir-Origen', el origen 'nulo' no tiene acceso permitido - Passport-SteamStrategy, Node

Tengo un sitio que usa Passport Steam Strategy. Mi servidor (Nodo con Express) se está ejecutando actualmente en localhost: 3000 mientras que mi front-end se está ejecutando en localhost: 8080. Sigo encontrándome con un problema de origen cruzado, solo cuando intento autorizar a través de Steam. Mis solicitudes se realizan a través de Axios y estoy usando CORS. He pasado horas buscando en Google y probando varias cosas, pero parece que no puedo hacer que funcione.

Este es el error que obtengo:

XMLHttpRequest no se puede cargarhttps://steamcommunity.com/openid/login?openid.mode=checkid_setup&openid.ns… 3000% 2Fsteam% 2Fauth% 2Freturn & openid.realm = http% 3A% 2F% 2Flocalhost% 3A3000% 2F. No hay encabezado 'Access-Control-Allow-Origin' presente en el recurso solicitado. Por lo tanto, el origen 'nulo' no tiene acceso permitido.

Aquí es donde se llama la ruta desde el extremo frontal:

    linkSteam(){
        api('http://localhost:3000/steam/auth')
            .then(res => {
                console.log(res);
                state.user = res.data.user;
            })
    }

Y aquí está mi configuración de axios en la parte delantera.

let api = axios.create({
  baseURL: 'http://localhost:3000/api/',
  timeout: 3000,
  withCredentials: true
})

Mi CORS está configurado de la siguiente manera

var whitelist = ['http://localhost:8080', 'https://steamcommunity.com', 'http://localhost:3000', 'null'];
// I added null here as someone said that it worked as their origin displayed null like mine does
var corsOptions = {
  origin: function (origin, callback) {
    var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
    callback(null, originIsWhitelisted);
  },
  credentials: true
};

Luego importo mi CORS en mi archivo principal y lo uso de la siguiente manera

app.use(cors(corsOptions))
app.use('*', cors(corsOptions))

Seguí viendo que puedes configurar tus credenciales de control de acceso, permitir, etc. y lo hice

app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Credentials', true);
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
  if ('OPTIONS' == req.method) {
     res.send(200);
   } else {
     next();
   }
});

Esto no ayudó. Intenté desglosar mi función original donde se llama / steam / auth y ejecuta un console.log (req.headers.origin) y escupe mi URL correcta, pero el error aún informa que el Origen es nulo. Si configuro mi Access-Control-Allow-Origin 'en' * ', obtengo un error ligeramente diferente que debo proporcionar credenciales, y que el Origen' localhost: 8080 'no está permitido.

Aquí está mi ruta / steam / auth.

router.get('/steam/auth',
  passport.authenticate('steam', {
    failureRedirect: '/'
  }),
  function (req, res) {
    res.redirect('/');
  });

Y esto funciona si hago clic en la URL que no se puede cargar y luego inicio sesión en Steam. Luego me redirigirá a mi sitio con la información de mi perfil de Steam intacta. El error está en intentar recuperar la redirección inicial a Steam para iniciar sesión. También he intentado hacer esto en un res.redirect a su URL directa y obtengo el mismo error.

¡Gracias de antemano por cualquier ayuda! Y avíseme si me falta información vital. He tratado de incluir todo, pero no me sorprendería si me perdiera algo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta