Desarrollé e implementé django rest api en heroku. entonces estoy tratando de buscar api en vue cli pero no funcionará. Dice error CORS. Esta vez mi mente tiene algunas preguntas.
CORS y JWT son cosas completamente diferentes.
JWT significa JSON Web Tokens y es una autenticación basada en token definida por RFC 7519. Por lo tanto, se utiliza un token JWT para permitir el acceso (inicio de sesión) a los recursos web. También puede agregar información al token (como el nombre de usuario), que se puede leer abiertamente si no está encriptado. Pero JWT tiene un método de firma, por lo que se puede verificar que el token sea válido. Hay diferentes algoritmos criptográficos que se pueden usar como, por ejemplo, RSA. Puede elegir entre firma asimétrica (p. ej., RSA) o firma simétrica (p. ej., HS256).
Puede encontrar información sobre JWT en jwt.io
CORS significa Intercambio de recursos de origen cruzado y define cómo se permite que el navegador solicite solicitudes a través de recursos o, en otras palabras, acceso HTTP a otros dominios.
En mi opinión, Mozilla hizo un buen trabajo cubriendo CORS bastante bien: https://developer.mozilla.org/de/docs/Web/HTTP/CORS
Para su problema específico: está tratando de acceder a un recurso (enlace http) que no pertenece al mismo dominio y, por lo tanto, su navegador no permite abrirlo por razones de seguridad.
allow-origin es un encabezado HTTP y se establece en el marco web que está utilizando. Como Django no viene con CORS listo para usar, necesitará alguna adición como https://github.com/ottoyiu/django-cors-headers
Una vez instalado, puede habilitar CORS
CORS_ORIGIN_ALLOW_ALL = Truey habilita las solicitudes de dominios cruzados a las que te gustaría llamar:
CORS_ORIGIN_WHITELIST = ( 'host1.example.com', 'host2.example.com', 'host3.foobar.info' )Ambos son diferentes
CORS (Cross-Origin Resource Sharing) permite compartir recursos entre un navegador de cliente y un servidor que tiene un origen diferente, esto permite detener o permitir la solicitud de un cliente al servidor.
JWT es una forma de agregar seguridad a su aplicación, puede usar JWT para identificar usuarios, de esa manera, el servidor solo envía respuestas a los usuarios que tienen un JWT válido, lea más sobre esto aquí
Respuesta 1: CORS debe estar habilitado en el backend, en el frontend puede usar axios para realizar una solicitud http, agregará los encabezados requeridos
Respuesta 2: al no habilitar CORS, las solicitudes de un cliente (personas de todo el mundo que visitan su sitio web/aplicación) serán rechazadas, por lo que su aplicación solo se puede usar desde la máquina host, de todos modos, JWT no agrega nada en este caso , JWT se utiliza para identificar un usuario válido, un usuario con acceso a los recursos del servidor. Habilitar CORS y aceptar solicitudes sin JWT significa que su aplicación/sitio web no utiliza un sistema de autenticación y no necesita validar la identidad del usuario. Hay otras formas de identificar a los usuarios, JWT es solo una de ellas.
Respuesta 3: Para evitar solicitudes maliciosas, se debe agregar una capa de seguridad, de esa manera solo los usuarios autorizados pueden acceder a los recursos del servidor.