HTTP响应头中的"允许"和"访问控制允许 - 方法"之间的区别?

Mic*_*hal 14 http node.js cors express backbone.js

我使用ExpressJS为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
Run Code Online (Sandbox Code Playgroud)

我已经修改了标题,以包含首先出现的两个Access-Control-Allow字段.其余部分由express自动生成,包括Allow字段.我没有问题就能获得.但是,当我尝试使用BackboneJS进行PUT或DELETE时,遇到:

Method PUT is not allowed by Access-Control-Allow-Methods.
Method DELETE is not allowed by Access-Control-Allow-Methods.
Run Code Online (Sandbox Code Playgroud)

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

但我希望了解这些与ExpressJS基于我绑定到路线时自动添加的基本"允许"之间的区别.有什么不同?

SLa*_*aks 22

Allow头表示你接受什么方法可言.
它不被浏览器使用; 它仅供参考.

Access-Control-Allow-Methods用于跨域AJAX请求; 在允许您从其他域发送AJAX请求之前,浏览器将检查该标头.