使用nginx + lua时,无法从客户端访问错误响应正文

时间:2016-02-04 17:25:50

标签: ajax http nginx lua

我使用以下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)

我想知道我能做些什么来成功访问服务器的错误响应及其内容,而不仅仅是它的状态代码。

1 个答案:

答案 0 :(得分:1)

根据manual,如果您希望nginx将内容作为页面的一部分返回,则需要使用ngx.HTTP_OK作为返回。否则它只会返回401。

ngx.status = authenticationResult.status
ngx.say(authenticationResult.body)
ngx.exit(ngx.HTTP_OK)
return