Estaba jugando un poco con buscar y luego me quedé atascado en un problema.
Hay un servicio de API aquí en Brasil que responde al tráfico de los servicios de autobuses públicos. Para obtener los recursos, primero debe enviar una solicitud POST que le proporcione una autenticación de cookies y luego puede realizar las solicitudes GET.
En esta etapa, puedo obtener la cookie de autenticación POST, pero cuando intento OBTENER datos más tarde, devuelve un error 401 y el mismo sitio. Supongo que es porque no puedo enviar la cookie a la solicitud GET, ¿verdad? Aquí está el error de la consola:
XHRGEThttp://api.olhovivo.sptrans.com.br/v2.1/Posicao/Linha?codigoLinha=856 [HTTP/1.1 401 Unauthorized 13ms] Some cookies are misusing the recommended “SameSite“ attribute 2 Cookie “apiCredentials” has been rejected because it is in a cross-site context and its “SameSite” is “Lax” or “Strict”. Autenticar Cookie “apiCredentials” has been rejected because it is in a cross-site context and its “SameSite” is “Lax” or “Strict”. Autenticar <empty string> bust.html:32:28En python, puedo hacerlo fácilmente con el comando de sesión, pero no puedo hacerlo con buscar en javaScript.
¿Alguien sabe cómo administrar ese código para que funcione y obtener la respuesta del servicio API?
¡¡¡Muchísimas gracias!!!
// este es mi codigo:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> const api_url = 'http://api.olhovivo.sptrans.com.br/v2.1/Posicao/Linha?codigoLinha=856' const auth_url = 'http://api.olhovivo.sptrans.com.br/v2.1/Login/Autenticar?token=1ce7717aac41a2c9315fb17054b93713459dae903e6914999dcea325dc7baa61' fetch(auth_url, { method: 'POST', mode: 'no-cors', credentials: 'include', }) .then(response => { console.log(response.headers.get('set-cookie')); // undefined console.log(document.cookie); // nope }); fetch(api_url, { mode: 'no-cors', credentials: 'include', }) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); </script> </body> </html>