【问题标题】:HTTP Patch XmlHttpRequest supportHTTP 补丁 XmlHttpRequest 支持
【发布时间】: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 的唯一常用方法。我刚刚在 stackoverflow 中读到 XmlHttpRequests 独立于 http 方法补丁,但我对此不确定

标签: jquery node.js browser express


【解决方案1】:

现代浏览器确实支持 PATCH(事实上,使用 $ajax 你可以做任何你喜欢的方法,只要浏览器不阻止它)。 在 IE9 下你运气不好。

对于 FF、Chrome 和 Safari,这不是什么大问题,因为它们几年前就开始自动更新,两年多前它们停止了阻止除 GET 和 POST 之外的方法。

【讨论】:

    【解决方案2】:

    大多数浏览器在应用于表单时将 HTTP 方法限制为 GET/POST。但是,对于 AJAX 请求,只要后端服务器能够支持它就可以工作的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2014-04-20
      • 2014-07-29
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多