Estoy usando cookies para la autenticación de inicio de sesión en un sitio web de Flask/Nuxt.js y funciona cuando ejecuto el servidor localmente pero no en mi implementación de Heroku. No creo que sea un problema de front-end porque cuando funciona, funciona tanto en el front-end local como en el de Vercel y se aplica la misma regla cuando no funciona. Además, no tengo ningún código en la interfaz para recibir la cookie.
Configuración de la cookie:
res = make_response({'user': user}, 200) res.set_cookie( 'token', value=token, httponly=True, samesite='strict', secure=True, expires=(datetime.utcnow() + timedelta(weeks=1)) ) return resDespués de la solicitud:
@app.after_request def after_request(response): response.headers.add( 'Access-Control-Allow-Origins', ['<deployment-site>', '<localhost>'] ) response.headers.add( 'Access-Control-Allow-Headers', 'Content-Type,Authorization,Secret' ) response.headers.add( 'Access-Control-Allow-Methods', '*' ) response.headers.add( 'Access-Control-Allow-Credentials', 'true' ) return responseEnviando pedido:
//Axios Client Getter export const getters = { client: (state, getters, rootstate) => { const BASE_URL = process.env.NODE_ENV === 'production' ? <deployment-site> : '<localhost>' const Client = Axios.create({ baseURL: BASE_URL }) Client.interceptors.request.use( async function(config) { const secret = bcrypt.hashSync( <api-secret>, genSaltSync() ) config.headers['Secret'] = secret return config }, error => Promise.reject(error) ) Client.defaults.withCredentials = true return Client } } //Axios Call export const actions = { async aUserLogin(store, user) { const Client = store.rootGetters['auth/client'] try { const res = await Client.post('login/users', user) return true } catch (err) { if (err.response.status === 401) { store.dispatch('aIncorrectPassword') } else { store.dispatch('error/aPassError', err, { root: true }) } return false } } }