Express res.redirect()不做任何事情

时间:2019-02-09 23:25:04

标签: node.js express redirect

我正在使用Express作为后端的Google OAuth流,在我的部分代码中,我使用res.redirect()。由于某种原因,当我在浏览器中查看路线时,它什么也没有做,甚至没有打印任何错误。

console.log输入网址时,我会得到一个完整的有效网址,如下所示:

https://accounts.google.com/o/oauth2/v2/auth?......

我尝试删除重定向代码,所以它只是res.redirect(url),还尝试了各种不同的代码。当我选择类似400的代码时,它将显示如下消息:

Bad Request. Redirecting to https://accounts.google.com/o/oauth2/v2/auth?......

我还尝试了.end()来结束请求,但是抛出了一个错误,提示TypeError: Cannot read property 'end' of undefined

下面是代码的一部分,用于处理生成身份验证网址并将用户重定向到该网址。

app.get('/url', (req, res) => {
  const url = /* generating url */
  res.redirect(301, url)
})

我希望它会将我重定向到该网站,以便我可以授权我的应用,但它只会显示一个空白页面。

编辑:由于某种原因,它实际上正在发送200 OK响应!

Screenshot

编辑2:不,我没有使用AJAX。

编辑3:这很重要,实际上这条路线在express.Router()内部。

编辑4:这是更多代码:

// server.js

import express from 'express'
import handler from './handler'

const app = express()
app.use('/auth', handler)
app.listen(4000, () => console.log('> Ready on port 4000'))
// handler.js

import { Router } from 'express'
import bodyParser from 'body-parser'
import cookieParser from 'cookie-parser'

const router = Router()
router.use(bodyParser.json())
router.use(cookieParser())

router.get('/url', (req, res) => {
  const url = /* generating url */
  res.redirect(301, url)
})

// Other routes

export default router

1 个答案:

答案 0 :(得分:2)

这个答案非常明显,我不确定为什么我没早意识到。经过数小时的汗水和眼泪,我向您提供答案:

the development proxy I was using都是问题。显然,它不支持重定向,因此我必须编写自己的重定向。现在工作正常。