Nodejs request timeout when making an http request while resolving a post request to my server
I am writing a server in NodeJS and Koa that forwards each request to another server with a HEAD request and if the response is OK, it continues dealing with the request.
The middleware that does this looks like this:
//basicAuth.js
import axios from 'axios'
export default async function(ctx,next) {
console.log(ctx.headers)
let result = await axios({
url: process.env.USER_SERVICE_LOGIN_PATH,
baseURL: process.env.USER_SERVICE_BASE_URL,
method: 'HEAD',
headers: ctx.headers,
timeout: 5000
})
await next()
}
This is used by my server as a middleware:
app.use(basicAuth)
The other service checks the headers and responds with 200 or 401.
This works fine whenever I receive a GET request to my server. But when I receive a POST request, the other server that I am reaching out to in the axios call throws an ERCONNRESET error and the connection times out. Take a look at my code for this route and some others:
router.get('/', async ctx => {
ctx.set('Allow','GET, POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.getCourses({...ctx.query})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
router.post('/create', async ctx => {
ctx.set('Allow','POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.postCourse({data: ctx.request.body})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
This is very strange behaviour and my only guess at why this is happening is there is some sort of header or something that breaks the request. I logged the headers passed in the axios call , as a consequence of requesting POST /create.
{ 'content-type': 'application/json',
'cache-control': 'no-cache',
'postman-token': '561fca27-f23a-4ae8-ba05-5fbeef0f0d20',
'user-agent': 'PostmanRuntime/7.4.0',
accept: '*/*',
host: 'localhost:3031',
'accept-encoding': 'gzip, deflate',
'content-length': '122',
connection: 'keep-alive' }
Any idea why my axios call doesn't go through when I access POST /create. The only output I get from the other server is ERRCONRESET, the route I am trying to access is not even reached, I tested with console.logs.
node.js http http-post axios koa
add a comment |
I am writing a server in NodeJS and Koa that forwards each request to another server with a HEAD request and if the response is OK, it continues dealing with the request.
The middleware that does this looks like this:
//basicAuth.js
import axios from 'axios'
export default async function(ctx,next) {
console.log(ctx.headers)
let result = await axios({
url: process.env.USER_SERVICE_LOGIN_PATH,
baseURL: process.env.USER_SERVICE_BASE_URL,
method: 'HEAD',
headers: ctx.headers,
timeout: 5000
})
await next()
}
This is used by my server as a middleware:
app.use(basicAuth)
The other service checks the headers and responds with 200 or 401.
This works fine whenever I receive a GET request to my server. But when I receive a POST request, the other server that I am reaching out to in the axios call throws an ERCONNRESET error and the connection times out. Take a look at my code for this route and some others:
router.get('/', async ctx => {
ctx.set('Allow','GET, POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.getCourses({...ctx.query})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
router.post('/create', async ctx => {
ctx.set('Allow','POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.postCourse({data: ctx.request.body})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
This is very strange behaviour and my only guess at why this is happening is there is some sort of header or something that breaks the request. I logged the headers passed in the axios call , as a consequence of requesting POST /create.
{ 'content-type': 'application/json',
'cache-control': 'no-cache',
'postman-token': '561fca27-f23a-4ae8-ba05-5fbeef0f0d20',
'user-agent': 'PostmanRuntime/7.4.0',
accept: '*/*',
host: 'localhost:3031',
'accept-encoding': 'gzip, deflate',
'content-length': '122',
connection: 'keep-alive' }
Any idea why my axios call doesn't go through when I access POST /create. The only output I get from the other server is ERRCONRESET, the route I am trying to access is not even reached, I tested with console.logs.
node.js http http-post axios koa
add a comment |
I am writing a server in NodeJS and Koa that forwards each request to another server with a HEAD request and if the response is OK, it continues dealing with the request.
The middleware that does this looks like this:
//basicAuth.js
import axios from 'axios'
export default async function(ctx,next) {
console.log(ctx.headers)
let result = await axios({
url: process.env.USER_SERVICE_LOGIN_PATH,
baseURL: process.env.USER_SERVICE_BASE_URL,
method: 'HEAD',
headers: ctx.headers,
timeout: 5000
})
await next()
}
This is used by my server as a middleware:
app.use(basicAuth)
The other service checks the headers and responds with 200 or 401.
This works fine whenever I receive a GET request to my server. But when I receive a POST request, the other server that I am reaching out to in the axios call throws an ERCONNRESET error and the connection times out. Take a look at my code for this route and some others:
router.get('/', async ctx => {
ctx.set('Allow','GET, POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.getCourses({...ctx.query})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
router.post('/create', async ctx => {
ctx.set('Allow','POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.postCourse({data: ctx.request.body})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
This is very strange behaviour and my only guess at why this is happening is there is some sort of header or something that breaks the request. I logged the headers passed in the axios call , as a consequence of requesting POST /create.
{ 'content-type': 'application/json',
'cache-control': 'no-cache',
'postman-token': '561fca27-f23a-4ae8-ba05-5fbeef0f0d20',
'user-agent': 'PostmanRuntime/7.4.0',
accept: '*/*',
host: 'localhost:3031',
'accept-encoding': 'gzip, deflate',
'content-length': '122',
connection: 'keep-alive' }
Any idea why my axios call doesn't go through when I access POST /create. The only output I get from the other server is ERRCONRESET, the route I am trying to access is not even reached, I tested with console.logs.
node.js http http-post axios koa
I am writing a server in NodeJS and Koa that forwards each request to another server with a HEAD request and if the response is OK, it continues dealing with the request.
The middleware that does this looks like this:
//basicAuth.js
import axios from 'axios'
export default async function(ctx,next) {
console.log(ctx.headers)
let result = await axios({
url: process.env.USER_SERVICE_LOGIN_PATH,
baseURL: process.env.USER_SERVICE_BASE_URL,
method: 'HEAD',
headers: ctx.headers,
timeout: 5000
})
await next()
}
This is used by my server as a middleware:
app.use(basicAuth)
The other service checks the headers and responds with 200 or 401.
This works fine whenever I receive a GET request to my server. But when I receive a POST request, the other server that I am reaching out to in the axios call throws an ERCONNRESET error and the connection times out. Take a look at my code for this route and some others:
router.get('/', async ctx => {
ctx.set('Allow','GET, POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.getCourses({...ctx.query})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
router.post('/create', async ctx => {
ctx.set('Allow','POST')
try {
if (ctx.get('error')) throw new Error(ctx.get('error'))
let res = await db.postCourse({data: ctx.request.body})
ctx.status = status.OK
ctx.body = res
}
catch(err) {
ctx.status = status.BAD_REQUEST
ctx.body = {status: status.BAD_REQUEST, message: err.message}
}
})
This is very strange behaviour and my only guess at why this is happening is there is some sort of header or something that breaks the request. I logged the headers passed in the axios call , as a consequence of requesting POST /create.
{ 'content-type': 'application/json',
'cache-control': 'no-cache',
'postman-token': '561fca27-f23a-4ae8-ba05-5fbeef0f0d20',
'user-agent': 'PostmanRuntime/7.4.0',
accept: '*/*',
host: 'localhost:3031',
'accept-encoding': 'gzip, deflate',
'content-length': '122',
connection: 'keep-alive' }
Any idea why my axios call doesn't go through when I access POST /create. The only output I get from the other server is ERRCONRESET, the route I am trying to access is not even reached, I tested with console.logs.
node.js http http-post axios koa
node.js http http-post axios koa
asked Nov 22 '18 at 21:48
SirWinningSirWinning
65
65
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53438339%2fnodejs-request-timeout-when-making-an-http-request-while-resolving-a-post-reques%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53438339%2fnodejs-request-timeout-when-making-an-http-request-while-resolving-a-post-reques%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown