Read the statement by Michael Teeuw here.
axios request returns no data, while http request does
-
I have set up an axios request for a module I’M trying to fix (MMM-Fantasy-Premier league)
axios.get(url) .then(function(response){ console.log(response); }).catch(function(err){ console.log(self.name + " : getleagueData : " + err); });
The axios request gives me a this:
{ status: 200, statusText: 'OK', headers: { connection: 'close', 'content-length': '0', server: 'Varnish', 'retry-after': '0', 'content-type': 'application/json', 'accept-ranges': 'bytes', date: 'Fri, 11 Sep 2020 07:17:50 GMT', via: '1.1 varnish', 'x-served-by': 'cache-hhn4058-HHN', 'x-cache': 'MISS', 'x-cache-hits': '0', 'x-timer': 'S1599808670.050178,VS0,VE0' }, config: { url: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings', method: 'get', headers: { Accept: 'application/json, text/plain, */*', 'User-Agent': 'axios/0.20.0' }, transformRequest: [ [Function: transformRequest] ], transformResponse: [ [Function: transformResponse] ], timeout: 0, adapter: [Function: httpAdapter], xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, validateStatus: [Function: validateStatus], data: undefined }, request: ClientRequest { _events: [Object: null prototype] { socket: [Function], abort: [Function], aborted: [Function], connect: [Function], error: [Function], timeout: [Function], prefinish: [Function: requestOnPrefinish] }, _eventsCount: 7, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, _last: true, chunkedEncoding: false, shouldKeepAlive: false, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, socket: TLSSocket { _tlsOptions: [Object], _secureEstablished: true, _securePending: false, _newSessionPending: false, _controlReleased: true, _SNICallback: null, servername: 'fantasy.premierleague.com', alpnProtocol: false, authorized: true, authorizationError: null, encrypted: true, _events: [Object: null prototype], _eventsCount: 10, connecting: false, _hadError: false, _parent: null, _host: 'fantasy.premierleague.com', _readableState: [ReadableState], readable: true, _maxListeners: undefined, _writableState: [WritableState], writable: false, allowHalfOpen: false, _sockname: null, _pendingData: null, _pendingEncoding: '', server: undefined, _server: null, ssl: [TLSWrap], _requestCert: true, _rejectUnauthorized: true, parser: null, _httpMessage: [Circular], [Symbol(res)]: [TLSWrap], [Symbol(asyncId)]: 5496, [Symbol(kHandle)]: [TLSWrap], [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBytesRead)]: 0, [Symbol(kBytesWritten)]: 0, [Symbol(connect-options)]: [Object] }, connection: TLSSocket { _tlsOptions: [Object], _secureEstablished: true, _securePending: false, _newSessionPending: false, _controlReleased: true, _SNICallback: null, servername: 'fantasy.premierleague.com', alpnProtocol: false, authorized: true, authorizationError: null, encrypted: true, _events: [Object: null prototype], _eventsCount: 10, connecting: false, _hadError: false, _parent: null, _host: 'fantasy.premierleague.com', _readableState: [ReadableState], readable: true, _maxListeners: undefined, _writableState: [WritableState], writable: false, allowHalfOpen: false, _sockname: null, _pendingData: null, _pendingEncoding: '', server: undefined, _server: null, ssl: [TLSWrap], _requestCert: true, _rejectUnauthorized: true, parser: null, _httpMessage: [Circular], [Symbol(res)]: [TLSWrap], [Symbol(asyncId)]: 5496, [Symbol(kHandle)]: [TLSWrap], [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBytesRead)]: 0, [Symbol(kBytesWritten)]: 0, [Symbol(connect-options)]: [Object] }, _header: 'GET /api/leagues-classic/63436/standings HTTP/1.1\r' + '\nAccept: application/json, text/plain, */*\r' + '\nUser-Agent: axios/0.20.0\r' + '\nHost: fantasy.premierleague.com\r' + '\nConnection: close\r' + '\n\r' + '\n', _onPendingData: [Function: noopPendingOutput], agent: Agent { _events: [Object: null prototype], _eventsCount: 1, _maxListeners: undefined, defaultPort: 443, protocol: 'https:', options: [Object], requests: {}, sockets: [Object], freeSockets: {}, keepAliveMsecs: 1000, keepAlive: false, maxSockets: Infinity, maxFreeSockets: 256, maxCachedSessions: 100, _sessionCache: [Object] }, socketPath: undefined, method: 'GET', path: '/api/leagues-classic/63436/standings', _ended: true, res: IncomingMessage { _readableState: [ReadableState], readable: false, _events: [Object: null prototype], _eventsCount: 3, _maxListeners: undefined, socket: [TLSSocket], connection: [TLSSocket], httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, headers: [Object], rawHeaders: [Array], trailers: {}, rawTrailers: [], aborted: false, upgrade: false, url: '', method: null, statusCode: 200, statusMessage: 'OK', client: [TLSSocket], _consuming: false, _dumped: false, req: [Circular], responseUrl: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings', redirects: [] }, aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, _redirectable: Writable { _writableState: [WritableState], writable: true, _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, _options: [Object], _ended: true, _ending: true, _redirectCount: 0, _redirects: [], _requestBodyLength: 0, _requestBodyBuffers: [], _onNativeResponse: [Function], _currentRequest: [Circular], _currentUrl: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings' }, [Symbol(isCorked)]: false, [Symbol(outHeadersKey)]: [Object: null prototype] { accept: [Array], 'user-agent': [Array], host: [Array] } }, data: '' }
So
response.data
is empty.
When I call this exact site in my browser I get a valid json esponse.What am I doing wrong?
Does anyone know? -
Hi,
Sometime something like this with https can help:
const httpsAgentConfig = { rejectUnauthorized: false } this.axiosInstance = axios.create({ httpsAgent: new https.Agent(httpsAgentConfig), })
after adapt it with your code
try it, no guaranties… but maybe … -
Did you ever find out the answer to this, i’m having the same issue.
-
No unfortunately not.
Above addition did not help.I’m getting the feeling that the axios requests somehow closes before the data field is being returned. Haven’t tried much since it is not highest priority for me. But would appreciate any idea/suggestion.
-
for some reason it doesn’t seem to like the axios user agent. Changing it to something else appears to work. Example:
axios.defaults.headers.common['User-Agent'] = 'PostmanRuntime/7.26.2';
-
@sharklaser many servers use the user-agent string to generate different content , as the ‘browsers’ all support different things, so a random string as user-agent will fail
-
@sharklaser said in axios request returns no data, while http request does:
:
axios.defaults.headers.common[‘User-Agent’] = ‘PostmanRuntime/7.26.2’;That was the solution! Thanks!!