2012-03-25 10 views
18

Silme yöntemlerini nasıl silebilirim?expressjs yönteminin silinmesi için destek ve methodoverride olmadan koyma

<form method="DELETE" action=""> 

Yukarıdakilerin kullanılması, kromun en son kararlı sürümünde bir GET isteği göndermektir. Bunun bir tarayıcı sorunu olması mı gerekiyor?

Bunları desteklemek için özel bir giriş alanı olmadan bunu geçersiz kılmak için daha iyi bir yol var mı?

+2

'un kullanımıyla ilgili güvenlik sorunları vardır ve genellikle XMLHttpRequests ile çalışmayı deneyin, yaptığınız gibi düzenli form gönderimleriyle değil. bkz: http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers –

+1

expressjs ve nodejs REST mimarisini kullanır. PUT ve/veya DELETE –

+0

'u kullanması gerekiyor. 4 ekspres için - burada cevabı bulacaksınız. [http://stackoverflow.com/questions/24019489/node-js-express-4-x-method-override-not-handling-put-request?answertab=votes#answer-24020025][1] [1]: http://stackoverflow.com/questions/24019489/node-js-express-4-x-method-override-not-handling-put-request?answertab=votes#answer- 24020025 –

cevap

40
Sadece göndermek için formu ayarlamanız gerekir

, ardından kullandığınız ekspres sürümüne göre yapılandırmayı

<input type="hidden" name="_method" value="delete"/> 

gibi gizli bir alan oluşturmak Ve ayarlayın. Daha sonra, form yöntemi bu gizli alanın değeriyle geçersiz kılınacaktır.

var methodOverride = require('method-override') 
app.use(methodOverride('_method')); 

Eski sürümler kullanabilirsiniz::

son sürümü böyle uygulamanızı yapılandırmak sonra, method-override paketini yüklemenizi gerektirecek

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(express.methodOverride()); 

bir daha da eski kullanımı oldu:

app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
+0

'app.use (express.urlencoded()); 've' app.use (express.methodOverride()); ' ' bodyParser' kullanmak mümkündür; bu, yüklenemeyen dosya yükleme desteğini ekler. [Express docs] (http://expressjs.com/api.html#bodyParser) daha fazla ayrıntı içeriyor. – yanychar

+0

aslında express.bodyParser(), Express'in 3.4 ve Connect'in 2.9 sürümlerinde kullanımdan kaldırılmıştır. Express.bodyParser() 'ın kullanımıyla ilgili güvenlik sorunları burada açıklanmıştır – netusco

+0

Bu makale [http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html) @ErnestConill atıfta bulundu: – cbaigorri

2

aslında express.bod yParser(), Express'in 3.4 ve Connect'in 2.9 sürümlerinde kullanımdan kaldırılmıştır. Express.bodyParser() explained here