Oye, estaba trabajando con fetch a normal fetch para solicitar mi API en mi servidor, y estaba funcionando, pero descubrí que Axios es más fácil, así que traté de reemplazar cada fetch, pero parece que xhr no funciona debido a cors,
Ya permití cors cuando estaba trabajando con fetch, pero por alguna razón cors no está permitido para solicitudes xhr (Axios)
Aquí están los valores predeterminados de Axios:
import axios from "axios" import store from "@/store" import { getLocalStorage } from "@/services/functions.services.js" axios.defaults.baseURL = store.getters.getData("serverLink") axios.defaults.withCredentials = true axios.defaults.headers.common["Authorization"] = `Bearer ${getLocalStorage("access_token")} ${getLocalStorage("refresh_token")}`y así es como uso Axios:
function fetchF(link, body, method) { return new Promise(async (resolve, reject) => { axios[method.toLowerCase()](link, body) .then(rsp => { setLocalStorage("access_token", rsp.access_token); setLocalStorage("refresh_token", rsp.refresh_token); resolve(rsp); }).catch(error => { setLocalStorage("access_token", ""); setLocalStorage("refresh_token", ""); store.dispatch("changeData", { option: "alertEl", value: "Please log in, and try again", }); return resolve({ isSuccess: false, err: "Please log in, and try again" }); }) }); }y así es como habilité cors en el lado del servidor:
app.use(cors({ credentials: true, }));aquí está el error: error en la página de red
Este es un error con su servidor, porque para cada solicitud, se envía una solicitud de verificación previa antes de la real.
Y del error 'PreflightWildcardOriginNotAllowed' básicamente significa que en las configuraciones de su servidor tiene la lista de dominios configurada con el comodín '*'
Así que simplemente cambie sus opciones cors en el servidor para 'Access-Control-Allow-Origin' a su dominio en lugar de '*'
Y si su servidor tiene su propia forma de manejar las solicitudes de verificación previa, que son básicamente solicitudes enviadas con 'OPCIONES', puede configurar los dominios manejados por eso en su dominio
Si un navegador envía una solicitud CORS con credentials: true , el navegador no aceptará una respuesta con 'Access-Control-Allow-Origin:* . Debe especificar Access-Control-Allow-Origin en un dominio. Como Access-Control-Allow-Origin:example.com .
Árbitro. https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#requests_with_credentials
Solo para aclarar cómo cambiar Access-Control-Allow-Origin a un dominio específico (@Cypherjac)
aquí es cómo:
app.use(cors({ origin: "http://localhost:8080", credentials: true, }));