我使用以下lua脚本转发从Node提供的所有服务器响应。我对/signup
路由的错误处理方式如下:
if authenticationResult.status ~= 201 then
...
ngx.status = authenticationResult.status
ngx.say(authenticationResult.body)
ngx.exit(401)
return
end
从客户端我使用superagent-promise
库发送一个典型的注册请求:
request
.post(url)
.type('form')
.send(data)
.end()
.then((response) => {
console.log('the response', response)
})
.catch((error) => {
console.log('the error', error)
})
当我从客户端发送有效的post
请求时,response
中的.then
变量已成功包含响应正文。
但是,当我发送了包含无效凭据的不正当post
请求时,既不会执行.then也不会执行.catch。相反,Chrome控制台会立即显示POST http://api.dockerhost/signup 401 (Unauthorized)
。
我想知道我能做些什么来成功访问服务器的错误响应及其内容,而不仅仅是它的状态代码。
答案 0 :(得分:1)
根据manual,如果您希望nginx将内容作为页面的一部分返回,则需要使用ngx.HTTP_OK
作为返回。否则它只会返回401。
ngx.status = authenticationResult.status
ngx.say(authenticationResult.body)
ngx.exit(ngx.HTTP_OK)
return