Sto usando espresso 4.13.3
(l'ultima) e codice seguente:Perché POST reindirizza a GET e PUT reindirizza a 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 reindirizza da ottenere, ma PUT reindirizza a PUT. È possibile effettuare il reindirizzamento PUT su GET (come per il POST)?
Ma perché esprimere reindirizza PUT -> PUT e POST -> GET? POST/PUT dovrebbe essere reindirizzato "ugualmente" giusto? Sembra che express usi automaticamente 303 per POST e 302 per PUT? – user606521
@ user606521 La specifica HTTP 1.1 più recente consente in particolare un reindirizzamento 302 per modificare un POST a un GET. (Vedi la citazione pertinente dalla RFC nella mia risposta.) La specifica non consente altre trasformazioni oltre la specifica modifica POST-to-GET, quindi PUT rimane PUT. Questo è per ragioni storiche; Ad esempio, i browser hanno implementato le specifiche originali errate e le specifiche sono cambiate per consentire questo errore. – apsillers