Estoy tratando de enviar mi token desde el cliente:
useEffect(() => { const verify_token = async () => { if (token === null){return setLoggedIn(false);} try { axios.defaults.headers.common['Authorization'] = token; const response = await axios.post(`${URL}/verify`) console.log(response.data.state) return response.data.state ? login(token) : logout(); } catch (error) { console.log(error); alert.show(error); setLoggedIn(false) } }; verify_token(); },[]);A mi backend para verificación:
const verify_token = (req, res) => { const token = req.headers.Authorization; console.log(token) try { jwt.verify(token, jwt_secret, (err, succ) => { err ? res.json({ state: false, message: "Token invalid" }) : res.json({ state: true, message: succ }); }); } catch (error){ console.log(error) } };Y me sale este Cors-error: Cross-Origin Request Blocked: The Same Origin Policy no permite leer el recurso remoto en http://localhost:3001/verify. (Motivo: la solicitud de CORS no tuvo éxito). Código de estado: (nulo).
Las rutas se configuran de la siguiente manera:
router.options('/verify', cors()) router.options('/enter', cors()) router.post('/enter',cors(), controller.login) router.post('/verify', cors(), controller.verify_token)simplemente pase este objeto a la función cors.
const corsOpts = { origin: 'http://localhost:3001', methods: [ 'OPTIONS', 'GET', 'POST', 'PUT', 'DELETE' ], allowedHeaders: '*', credentials: true } y usted, si usa express , puede usarlo donde su express se inicia por primera vez y asignar middleware para que trabaje para usted en lugar de pasar a cada ruta.
const app: Express = express(); app.use(cors(corsOpts);