我使用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基于我绑定到路线时自动添加的基本'允许'之间的区别。有什么区别?
答案 0 :(得分:20)
Allow
标题表示您接受的方法。
它不被浏览器使用;它只是供参考。
Access-Control-Allow-Methods
用于跨域AJAX请求;在允许您从其他域发送AJAX请求之前,浏览器将检查该标头。