Я работаю над потоком Google OAuth с Express в качестве бэкэнда, и в части своего кода я использую res.redirect()
.По какой-то причине он ничего не делает, когда я просматриваю маршрут в своем браузере, даже не печатаю никаких ошибок.
При console.log
введении URL-адреса я получаю полный действительный URL-адрес, например:
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
.
Ниже приведена часть кода, которая обрабатывает создание URL-адреса аутентификации и перенаправление на него пользователя.
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