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

时间:2012-08-19 14:17:41

标签: http node.js backbone.js cors express

我使用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

我已修改标头,以包含首先出现的两个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.

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

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

1 个答案:

答案 0 :(得分:20)

Allow标题表示您接受的方法。
它不被浏览器使用;它只是供参考。

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