【问题标题】:sending an HTTP request with an unordinary method使用非常规方法发送 HTTP 请求
【发布时间】:2013-12-06 13:52:18
【问题描述】:

我正在尝试在我的网页上创建一个链接,当访问该链接时会导致发送带有非正常方法的 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 根本不发出请求。 我调整了浏览器安全设置(启用“跨域访问数据源), 但是,浏览器仍然没有发出请求。 我猜浏览器设置需要进一步调整,有没有人知道如何解决这个问题?

【问题讨论】:

标签: ajax http xmlhttprequest httpverbs


【解决方案1】:

如果您使用 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 );
});

【讨论】:

猜你喜欢
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2014-12-24
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多