Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

372
Views
Verifique si la miniatura de Youtube existe usando la búsqueda de JavaScript

Sé que preguntas como esa ya se han hecho muchas veces, pero aún no pude encontrar una solución o incluso una explicación para eso.

Trabajo en un proyecto que necesita la mejor resolución posible en las miniaturas de YouTube. Usé la siguiente URL https://i.ytimg.com/vi/VIDEOID/maxresdefault.jpg , sin embargo, descubrí que en raras ocasiones esto no funciona y obtengo una imagen de marcador de posición y un estado de 404, atrás. En ese caso, me gustaría usar https://i.ytimg.com/vi/VIDEOID/hqdefault.jpg .

Para verificar si existe una imagen, traté de hacer una solicitud de búsqueda usando JavaScript:

 const url = "https://i.ytimg.com/vi/VIDEOID/hqdefault.jpg" fetch(url).then(res => console.log(res.status))

Pero recibo un error que indica que falta el CORS-Header 'Access-Control-Allow-Origin'. Intenté configurarlo y varios otros encabezados que encontré, pero fue en vano. Solo funciona si envío la solicitud en modo no cors, pero el estado siempre es 0 y parece que también faltan todos los demás datos.

También probé la solicitud en Postman donde funcionó e incluso copié el JavaScript-Fetch-Snipped que Postman me dio:

 var requestOptions = { method: 'GET', redirect: 'follow' }; fetch("https://i.ytimg.com/vi/VIDEOID/maxresdefault.jpg", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error));

Leí que este es un problema del servidor y Youtube lo está restringiendo, pero ¿por qué funciona en Postman y por qué funciona cuando se usa <cfhttp> en ColdFusion? Además, el código de estado incluso aparece en la consola dentro del mensaje CORS-Error...

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

¿Por qué? explicado:

La política CORS se implementa en los navegadores para permitir compartir recursos entre sitios web y evitar que los sitios web se ataquen entre sí:

  • SOP (política del mismo origen) evita que los sitios web se ataquen entre sí, pero no permite que se compartan entre orígenes.
  • CORS (intercambio de recursos de origen cruzado) relaja las restricciones SOP, pero requiere encabezados/configuración de servidor específicos.

Estas políticas solo se aplican dentro de un navegador. Presumiblemente, Postman y Coldfusion funcionan porque realizan solicitudes HTTP directas fuera del contexto de un script de navegador. Lo que lleva a cómo solucionar las restricciones de CORS...

Soluciones:

3 formas de corregir el error de CORS y cómo funciona el encabezado Access-Control-Allow-Origin explica cómo eludir las restricciones de CORS. Todos funcionan manipulando los encabezados/origen de la solicitud:

  1. Extensión del navegador. (No estoy seguro si esto todavía funciona en 2022. Solo funciona si el usuario instala la extensión del navegador).
  2. Proxy de solicitud de terceros. (El proxy vinculado en la demostración ahora está limitado debido al abuso).
  3. Cree su propio proxy.

Siendo realistas, la opción #3 es la única solución real. Los puntos finales de SvelteKit hacen que sea súper simple enviar solicitudes de proxy.

about 4 years ago · Juan Pablo Isaza Report

0

El siguiente código funciona correctamente para mí y siempre obtengo el estado 200 ok Se puede hacer una implementación similar

 //import fetch from 'node-fetch'; const fetch = require('node-fetch'); loaddata(); async function loaddata(){ var Headers="{headers: {'Access-Control-Allow-Origin': '*'}"; var requestOptions = { method: 'GET', redirect: 'follow', }; const response = await fetch('https://i.ytimg.com/vi/9DCwyuH29SI/hqdefault.jpg',requestOptions,Headers); console.log(response); }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!