我正在使用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响应!
编辑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
答案 0 :(得分:2)
这个答案非常明显,我不确定为什么我没早意识到。经过数小时的汗水和眼泪,我向您提供答案:
the development proxy I was using都是问题。显然,它不支持重定向,因此我必须编写自己的重定向。现在工作正常。