HTTP 补丁 XmlHttpRequest 支持
Posted
技术标签:
【中文标题】HTTP 补丁 XmlHttpRequest 支持【英文标题】:HTTP Patch XmlHttpRequest support 【发布时间】:2012-07-02 13:38:29 【问题描述】:我正在开发一些待办事项应用程序,并希望使用 HTTP 方法 PATCH 来添加和删除待办事项,因为这在语义上比 PUT 更好。
在后端我使用的是 express.js (node.js) 和前端的主干.js(它使用 jQuery 进行 ajax)。
我已经尝试过它是否真的在我的本地开发套件(Archlinux、Chromium 20、node.js 0.8、express 2.X)的后端和前端工作,并且它工作:
app.js
app.patch('/todo/:id', function(req, res)
console.log('patch successfull');
Chromium 网络控制台
$.ajax(
url: '/messages/4ff13720f00e2e2c4b000006',
type: 'PATCH',
data: body: 'that is a patched message'
);
提到了请求,并且在可能的情况下还提到了数据库操作,没有例外。
我现在想知道其他浏览器如何支持补丁方法。我用谷歌查了一下,但是很难找到,因为 PATCH 有多种含义...
【问题讨论】:
“多重含义”包括“浏览器补丁”、“眼罩”和“盗版补丁”。第一个是最常弹出的结果。:P
这没有回答你的问题,但是如果你 use
express.methodOverride()
中间件,你可以发送一个名为 _method
的参数和你的 POST
请求,Express 会将它路由到参数中的方法(例如_method=patch
将执行app.patch
)。
嗨,我知道,这是在没有 javascript 的情况下发送 PUT 和 POST 的唯一常用方法。我刚刚在 *** 中读到 XmlHttpRequests 独立于 http 方法补丁,但我对此不确定
Are the PUT, DELETE, HEAD, etc methods available in most web browsers? 的可能重复项
【参考方案1】:
现代浏览器确实支持 PATCH(事实上,使用 $ajax 你可以做任何你喜欢的方法,只要浏览器不阻止它)。 在 IE9 下你运气不好。
对于 FF、Chrome 和 Safari,这不是什么大问题,因为它们几年前就开始自动更新,两年多前它们停止了阻止除 GET 和 POST 之外的方法。
【讨论】:
【参考方案2】:大多数浏览器在应用于表单时将 HTTP 方法限制为 GET/POST。但是,对于 AJAX 请求,只要后端服务器能够支持它就可以工作的方法。
【讨论】:
以上是关于HTTP 补丁 XmlHttpRequest 支持的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 拓展开发 Service Worker 无法使用 XMLHttpRequest 发送 HTTP 请求