我使用快遞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