以编程方式查看客户端浏览器是否支持PUT / DELETE方法

有没有办法看看客户端浏览器是否支持PUT或SEARCH方法用于JQuery和AJAX请求?

  • HTML5 PUT / DELETE方法在Chrome中不起作用?
  • 大多数Web浏览器中是否提供PUT,DELETE,HEAD等方法?

我有以下代码,并且PUT在Chromium和Chrome中没有出现在服务器端…我想知道,如果浏览器不支持PUT,如何将其更改为POST请求。 ..为了向后兼容

 function do_data(url, action, query) { try { if ($.browser.msie) { var xdr = new XDomainRequest(); if (query !== null) { console.log(query); xdr.open(action, url + '?' + $.param(query)); } else { xdr.open(action, url); } xdr.onload = function() { var data = $.parseJSON(this.responseText); show_data(data); }; xdr.send(); } else { if (query !== null) { $.ajax({ url: url, data: query, type: action, success: function(data) { console.log(data); }, error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus); } }); } else { console.log(query); $.ajax({ url: url, type: action, success: function(msg) { console.log(data); } }); } } } catch (e) {} } 

使用上面的代码,如果我在Chromium / Chrome上使用“PUT”,则error: function(jqXHR, textStatus, errorThrown)将打印出简单的error

在服务器端,我看到REQUEST_METHOD:OPTIONS而不是PUT。

只是为了确认,对于遇到这种情况的人来说……没有一种程序化的方式

在大多数浏览器中处理缺少PUT和DELETE支持的常用方法是使用HTTP POST隧道。 基本上,您使用POST并将实际VERB添加到X-HTTP-Method-Override HTTP标头。 在服务上检查后者,如果没有找到,请使用普通的HTTP方法。

有关详细信息,请参见此处