HTTP响应头中'Allow'和'Access-Control-Allow-Methods'之间的区别?

我使用ExpressJS for NodeJS编写了一个RESTful API。 我正在使用BackboneJS来调用这个API。

这是我的API通过OPTIONS返回的示例头:

Access-Control-Allow-Headers:Content-Type Access-Control-Allow-Origin:http://localhost Allow:GET,PUT,DELETE Connection:keep-alive Content-Length:14 Content-Type:text/html; charset=utf-8 Date:Sun, 19 Aug 2012 13:52:35 GMT X-Powered-By:Express 

我已经修改了标题以包含首先出现的两个访问控制允许字段。 其余部分由express自动生成,包括允许字段。 我能够没有问题的GET。 但是,当我尝试使用BackboneJS进行PUT或DELETE时,遇到:

 Method PUT is not allowed by Access-Control-Allow-Methods. Method DELETE is not allowed by Access-Control-Allow-Methods. 

当然,我可以修改我的响应头包括这两个方法来解决这个问题。

但是我希望理解这些与ExpressJS基于绑定到路由的自动添加的基本“允许”之间的区别。 有什么不同?

Allow标题指出你接受什么方法。
它不被浏览器使用; 这只是供参考。

Access-Control-Allow-Methods用于跨域AJAX请求; 浏览器会在允许您发送来自其他域的AJAX请求之前检查该标头。