Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

119
Visualizações
¿Cómo enviar una cookie de ID de sesión en una solicitud de origen cruzado?

Estoy usando la API de Peloton para generar estadísticas basadas en los datos de entrenamiento obtenidos de su API. Ciertas solicitudes de API requieren que el usuario inicie sesión, lo que se puede hacer enviando su nombre de usuario y contraseña a /auth/login. Devuelve una ID de sesión que se necesita para obtener esas solicitudes bloqueadas, como el historial de entrenamiento. El ID de sesión aparentemente se envía como una cookie (usando credenciales: 'incluir').

Cuando configuro las credenciales para incluir, dice "Access to fetch at (url) from origin (my site) has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '\*' when the request's credentials mode is 'include'. ¿Cómo soluciono esto? Mi código está a continuación.

 async function loginAndGetData(username, password) { const info = { 'username_or_email': username, 'password': password }; const response = await fetch("https://pelotoncors.herokuapp.com/https://api.onepeloton.com/auth/login", { method: 'POST', body: JSON.stringify(info) }); const loginInfo = await response.json(); const workoutInfo = await fetch('https://pelotoncors.herokuapp.com/https://api.onepeloton.com/api/user/' + loginInfo.user_id + '/workouts?limit=1234567890', { method: 'GET', credentials: 'include' }); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Así que identifiqué múltiples problemas:

  1. Paleton no tiene una API oficial o incluso un documento de API (eso no hace que sea imposible usar su API, pero puede ser difícil, y sería cauteloso con eso)
  2. CORS
  3. Cors-en cualquier lugar

Lógicamente, para evitar el uso de la API por parte de cualquier persona, Paleton, como cualquier otra persona que crea una API seria, decidió colocar encabezados CORS en sus respuestas, lo que obviamente no solo es razonable desde el punto de vista de la seguridad, sino que puede ser bastante molesto porque hace que sea básicamente imposible usar la API desde los navegadores porque el navegador impone los encabezados CORS que los servidores configuran en las respuestas.

Entonces, su primera idea con cors-anywhere parece racional, pero no funciona porque usa credentials: 'include' que requiere que el encabezado 'Access-Control-Allow-Origin' NO esté configurado como comodín * .

Si no está familiarizado con lo que significa todo lo anterior, permítame explicarlo: en su código anterior, que asumo debido al mensaje de error anterior que ejecuta en un navegador, intenta realizar una llamada de búsqueda a cors-anywhere con la URL de la API y el ID de usuario. Cors-anywhere hace la llamada a la API por usted e ignora los CORS-Headers (puede hacerlo porque es solo una política creada para que los navegadores aumenten la seguridad), le envía los datos que obtiene de la API PERO con el ' Access-Control-Allow-Origin' (de forma predeterminada) configurado como comodín * . Sin embargo, debido a que usa credentials: 'include' , que requiere que el encabezado 'Access-Control-Allow-Origin' NO esté configurado como comodín, su navegador detecta una violación de la política CORS y obtiene el error anterior.

Entonces, qué puedes hacer ahora ?

  1. O descarga las llamadas API a su propio backend (que, por cierto, siempre es una mejor opción), ignora el CORS usted mismo y configura el encabezado 'Access-Control-Allow-Origin' de manera adecuada o
  2. ¿Tal vez hay una consulta que puede agregar a la URL para cors-anywhere para cambiar el 'Access-Control-Allow-Origin'? (Pero eso no lo sé) o
  3. Buscas una alternativa
about 4 years ago · Juan Pablo Isaza Relatório

0

Supongo que el problema es su backend en Heroku, debe configurar el encabezado "Access-Control-Allow-Origin": verdadero en su backend.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda