在 nodejs Express app 中的链接中发送 DELETE 请求
Sending DELETE request in a link in nodejs express app
我有一个接受删除请求的路由,我知道使用 Express 您可以添加
<input type="hidden" name="_method" value="delete" />
到向 URL 发送 POST 请求的表单。
但是,您将如何使用链接而不是表单来执行此操作?
GET 请求不支持这样做:
methodOverride()
只检查req.body
(POST 参数)和请求标头 - 两者都不能为常规链接设置(但是,您可以在 AJAX 请求中设置自定义标头,即使它们使用 GET)。
这是有道理的,因为否则即使使用 CSRF 代币,它也可能是一个主要问题。你永远无法知道浏览器何时会决定预取链接 - 所以GET请求不应该执行诸如删除内容之类的操作。
如果你真的需要它并且不关心缺点,请考虑编写一个自定义函数:
function methodOverrideGET(key) {
key = key || "_method";
return function methodOverrideGET(req, res, next) {
if (req.originalMethod != req.method) {
// already overridden => do not override again
next();
return;
}
req.originalMethod = req.method;
if (req.query && key in req.query) {
req.method = req.query[key].toUpperCase();
delete req.query[key];
}
next();
};
};
现在,您可以在.use(methodOverride)
后.use(methodOverrideGET)
,然后只需将_method=DELETE
添加到查询字符串中即可。
相关文章:
- 如何使Pinterest PDK.request()成为DELETE请求
- 使用get/put/delete方法从ajax请求调用laravel-controler
- 在 nodejs Express app 中的链接中发送 DELETE 请求
- Backbone.js model.destroy() 不发送 DELETE 请求
- 获取 404 用于 IIS 7.5 服务器 2008 上的 PUT 和 DELETE 请求
- 如何在angularjs DELETE请求中将数据作为对象发送
- 对php请求的post-jquery请求使用一个delete函数
- Node/Express-如何实现DELETE和PUT请求
- 如何使用javascript或jQuery与PUT或DELETE请求同步导航寻址
- AngularJS对我的REST Web服务的DELETE请求是纯文本的
- 使用XmlHttpRequest发出DELETE请求
- 在DELETE请求时参数为NULL
- 获取DELETE和PUT请求
- 在DELETE请求完成之前呈现页面
- 在DELETE请求后进行res.redirect
- 卸载时的同步跨域ajax DELETE请求
- 在express.js中使用angular的delete请求会遇到麻烦
- 使用主干js复制POST, GET和DELETE请求
- 在Rails中使用AJAX进行DELETE请求时,如何从表单中获得不同的id值
- backbone model.destroy不触发DELETE请求