Sé que hay muchos artículos sobre el tema, pero ninguno de ellos me ayudó a resolver este problema.
Tengo un sitio web donde los usuarios pueden conectar su cuenta de Gmail y administrar su bandeja de entrada. Hago solicitudes (para obtener, enviar, desechar mensajes, etc.) desde el navegador en javascript usando un token de acceso que obtuve de mi servidor.
Cuando envío un correo electrónico con archivos adjuntos, siempre obtengo:
Access to fetch at 'https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=multipart' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.Junto con un:
POST https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=multipart net::ERR_FAILED 200¡Pero el mensaje se envía con éxito de todos modos!
En Google Cloud Console, en API y servicios > Credenciales, en la configuración de mi "ID de cliente de OAuth 2.0", agregué "http://localhost:8000" en "Orígenes de JavaScript autorizados", esperé 5 minutos y borré mi cache. Pero aún recibe el error CORS.
Instalé esta extensión de Chrome https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf y elimina el error, pero obviamente no puedo pedirle a mi usuario que lo haga.
Pensé que tal vez podría deberse a un error en los encabezados o el cuerpo de mi solicitud, pero el correo electrónico se está enviando, así que... ¿Alguna idea de cómo deshacerse de ese error?