Estou tentando escrever uma chamada GET http para um site para obter pontuações de jogos. Descobri o token x-hsci-auth-token e ele usa o Token de Autorização Akamai Edge. Recebo boas respostas para todas as solicitações, exceto uma.
Para esta solicitação, recebo 204 e "Sem Conteúdo". Mas a mesma solicitação retorna uma resposta válida no DevTools do Chrome. Não sei o que estou perdendo aqui.
{
status: 204,
statusText: 'No Content',
headers: Headers {
'x-hsci-cache-time': '2025-04-05T22:59:49.093Z',
expires: 'Sat, 05 Apr 2025 22:59:49 GMT',
'cache-control': 'max-age=0, no-cache, no-store',
pragma: 'no-cache',
date: 'Sat, 05 Apr 2025 22:59:49 GMT',
connection: 'keep-alive',
'access-control-allow-headers': 'Content-Type,Authorization,x-hsci-auth-token',
'access-control-expose-headers': 'x-hsci-pwa-cache,x-hsci-cache-time,st-access-token,st-refresh-token',
'access-control-allow-credentials': 'true',
'access-control-allow-origin': 'https://www.<website>.com'
},
body: null,
bodyUsed: false,
ok: true,
redirected: false,
type: 'basic',
url: '<endpoint url>'
}
Vi que o navegador fez uma solicitação de pré-voo . Até tentei o mesmo payload com a solicitação OPTIONS e obtive 200 de volta.
Edit: Meu objetivo principal é OBTER o conteúdo. Eu estava tentando OPTIONS para ver se havia algum problema com a autenticação ou com meus cabeçalhos. Como isso funciona, acho que estou esquecendo de algo mais.
{
status: 200,
statusText: 'OK',
headers: Headers {
'content-type': 'text/html',
'content-length': '2',
expires: 'Sat, 05 Apr 2025 23:03:24 GMT',
'cache-control': 'max-age=0, no-cache, no-store',
pragma: 'no-cache',
date: 'Sat, 05 Apr 2025 23:03:24 GMT',
connection: 'keep-alive',
'access-control-allow-headers': 'Content-Type,Authorization,x-hsci-auth-token',
'access-control-expose-headers': 'x-hsci-pwa-cache,x-hsci-cache-time,st-access-token,st-refresh-token',
'access-control-allow-credentials': 'true',
'access-control-allow-origin': 'https://www.<website>.com'
},
body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
bodyUsed: false,
ok: true,
redirected: false,
type: 'basic',
url: '<endpoint url>'
}
Estou usando os mesmos cabeçalhos de solicitação nas minhas fetch()
requisições. Então, não sei por que esse endpoint específico não retorna nada.
const response = await fetch(BASE_API_URL + path, {
method: 'GET',
headers: {
"x-hsci-auth-token": <edgeAuth token>,
"Origin": "https://www.<website>.com",
"Referer": "https://www.<website>.com/",
"accept": "*/*",
"accept-encoding": "gzip, deflate, br, zstd",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"sec-fetch-dest": "empty",
},
})