Hola, estoy haciendo un desafío de codificación y estoy tratando de obtener datos de una página html, pero sigo recibiendo el error 400. No veo dónde estaría mal mi sintaxis. Promise devuelve una cadena vacía como PromiseResult. ¿Por qué no obtengo los datos de https://adventofcode.com/2021/day/2/input ?
fetch('https://adventofcode.com/2021/day/2/input', { method: 'GET', mode: 'no-cors', credentials: 'omit', headers: { 'Content-Type': 'text/plain' } }) .then((response) => { response.text(); }) .then((html) => { var parser = new DOMParser(); var doc = parser.parseFromString(html, 'text/html'); }) .catch((err) => { console.log(err) })Después de visitar https://adventofcode.com/2021/day/2/input obtengo información que
Puzzle inputs differ by user. Please log in to get your puzzle input.Por favor, compruebe si está proporcionando correctamente sus datos de inicio de sesión.
mode: 'no-cors',
Esto dice que no va a hacer nada que requiera que se le otorgue permiso usando CORS. Cualquier cosa que requiera CORS será ignorada silenciosamente.
Necesita permiso de CORS para leer datos entre orígenes. Como ha dicho que no va a usar CORS, no tiene permiso, por lo que no obtiene ningún dato.
Es por eso que obtienes una cadena vacía.
credenciales: 'omitir',
El punto final input requiere sus credenciales para poder proporcionarle su entrada, que es única para cada usuario. Dado que le dijo al navegador que no enviara nada, el punto final no entiende la solicitud.
Como un aparte:
headers: { 'Content-Type': 'text/plain' }
Esto es una tontería.
Afirma que la solicitud incluye un cuerpo que consta de texto sin formato.
Está realizando una solicitud GET. No hay ningún cuerpo en la solicitud en absoluto.
Advent of code espera que descargue manualmente sus datos de entrada. No espera que su solución la obtenga del sitio web de AoC.
Las soluciones JS generalmente se ejecutan en Node.js (en lugar de un navegador web) donde pueden usar el módulo fs para leer la copia local del archivo de entrada. (Consejo: me resulta útil copiar/pegar los datos de muestra en un archivo de muestra para comparar mis resultados con el ejemplo trabajado cada día).