【问题标题】:Can you make a HTTP PATCH request from Javascript?你能从 Javascript 发出 HTTP PATCH 请求吗?
【发布时间】:2011-09-21 15:16:43
【问题描述】:

我正在使用一个 API,它要求我将 HTTP PATCH 请求作为 URI 的一部分,这是否可以通过 Javascript 完成,我的研究表明我只能执行 POST、GET、DELETE 和 PUT。是否允许使用 PATCH?

谢谢,

【问题讨论】:

  • 大多数浏览器将 HTTP 方法限制为 POST/GET,对其他的支持不完整,例如 IE9 会删除,但是我还没有在每个浏览器中看到它。为获得最佳结果,请重新表述您关于浏览器对 HTTP 方法的支持的问题。
  • 浏览器对 POST/GET 的限制适用于 HTML 表单提交,而不适用于 XmlHttpRequest。

标签: javascript http


【解决方案1】:

根据一些研究,PATCH 方法似乎是新的(2010 年 3 月 https://www.rfc-editor.org/rfc/rfc5789),因此如果您尝试在 XMLHttpRequest 上定义 PATCH,它可能会起作用,但仅适用于现代浏览器的最新版本。尚未找到支持的浏览器列表。

【讨论】:

  • 不正确。浏览器不需要“知道”一个方法就可以在 XmlHttpRequest 中支持它。
  • @JulianReschke IE8 中 XHR(不是 activeX 风格)的实现不支持 PATCH 方法。
【解决方案2】:

我不确定“PATCH”请求的确切含义,但它似乎是可能的(至少在 Firefox 6 和 Chromium 12 中)。根据Mozilla source code,只有TRACETRACK请求的限制。

快速测试用例:

<!-- test.html -->
<script>
var x=new XMLHttpRequest();
x.open("patch", "/");
x.send(null);
</script>

可以使用任何网络服务器,但我选择 Python 的 SimpleHTTPServer 模块。

$ ls
test.html
$ python -m SimpleHTTPServer
localhost - - [21/Sep/2011 17:32:11] "GET /test.html HTTP/1.1" 200 -
localhost - - [21/Sep/2011 17:32:11] code 501, message Unsupported method ('patch')
localhost - - [21/Sep/2011 17:32:11] "patch / HTTP/1.1" 501 -

所以,只要服务器支持该方法,请求就通过了。

【讨论】:

  • 是的。有一些旧版浏览器可能存在“扩展”方法的问题; Microsoft 在 IE8 或 IE9 中修复了此问题。在较旧的 IE 中,您可以回退到没有该限制的 XHR ActiveX 对象。
猜你喜欢
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 2016-04-26
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
相关资源
最近更新 更多