使用非常方法发送HTTP请求

时间:2013-12-06 13:52:19

标签: ajax http xmlhttprequest httpverbs

我正在尝试在我的网页上创建一个链接,当访问该链接时会导致发送具有非常方法的HTTP请求(为了示例,该方法是 POSTS )。 我知道常规HTML表单只支持GET和POST,而AJAX应该支持PUT和删除。有没有办法用不同于这些标准HTTP方法的方法发出请求? 提前谢谢。

==============

在提示之后,我调整了我的页面以获得以下HTML:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $.ajax({url:"http://www.example.php",type:"POSTS",dataType:"html"});
  });
});
</script>
</head>
<body>
<button>Send Request</button>
</body>
</html>

令人惊讶的是,这在Chrome和Firefox中无效,但在IE的更新版本中有效: 当我尝试使用Firefox和Chrome发出请求时,浏览器使用OPTIONS方法和以下标题发出请求:

Access-Control-Request-Method: POSTS

只有IE根据要求发出请求 - 使用POSTS HTTP方法。

===

原来上述HTML不起作用。(不会发出带有自定义标题的所需请求)。 如上所述,firefox和chrome使用Access-Control-Request-Method标头发出初始请求,而IE根本不发出请求。 我调整了浏览器安全设置(启用“跨域访问数据源”), 但是,浏览器仍未发出请求。 我猜测浏览器设置需要进一步调整,有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你使用javascript,快速回答是。

方法由标准和状态代码定义,但它们可以扩展。比如增加方法词汇量的webdav。

并非所有浏览器都支持任意的http方法,尤其是旧版本的IE(惊喜!)

所以你可以简单地使用一个链接/按钮调用一个javascript函数来发出你的http请求。

简单地使用jQuery:

var request = $.ajax({
  url: "script.php",
  type: "POSTS",
  data: { id : menuId },
  dataType: "html"
});

request.done(function( msg ) {
  $( "#log" ).html( msg );
});

request.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});