我使用快递4.13.3
(最新)和下面的代码:为什么POST重定向到GET并且PUT重定向到PUT?
var express = require('express')
var app = express()
app.get('/test', function (req, res, next) {
res.send('hello!')
})
app.post('/test', function (req, res, next) {
res.redirect('/test')
})
app.put('/test', function (req, res, next) {
res.redirect('/test')
})
app.listen(5001)
// GET /test -> 'hello!'
// POST /test -> 'hello!'
// PUT /test -> ERR_TOO_MANY_REDIRECTS
POST重定向到GET但PUT重定向到PUT。是否有可能使PUT重定向到GET(与POST相同)?
但为什么表达式重定向PUT - > PUT和POST - > GET? POST/PUT应该重定向到“平等”的权利?看起来快递自动使用303用于POST,302用于PUT? – user606521
@ user606521最新的HTTP 1.1规范特别允许302重定向将POST更改为GET。 (请参阅我的答案中RFC的相关引用。)除了特定的POST到GET更改外,规范不允许进行任何其他转换,因此PUT仍然是PUT。这是历史原因;即浏览器实现了原始规格错误,并且规范发生变化以允许此错误。 – apsillers