2013-01-11 117 views
2

我想了解为什么许多开发人员在其REST API产品中默认禁用CORS?安全是主要关心的问题?从W3C wiki article上CORS支持,它看起来是相当简单的添加CORS的支持(添加页眉访问控制允许来源值为“*”在服务器上)启用CORS支持REST API

最近我遇到了问题时,试图编写一个简单的仅用于JavaScript的应用程序来访问Azure表和其他Rest API,如Panoptix和ProductWIKI。他们有一些很棒的REST API,但不允许CORS。特定的Azure表具有与其REST API调用相关的严格身份验证过程,尽管它不会让CORS(至少现在是这样)。

我想听听RESTFul APIs的开发人员和管理员关于他们为您的API产品启用/禁用CORS的原因吗?安全/流量/兼容性是主要关心的问题还是还有其他更多?

+0

我对这个问题有兴趣从服务器端。对于我设置的服务API,我通常添加CORS,仅仅是因为它打开了从浏览器使用API​​的大门。但我想知道安全考虑是什么。我的观点是,CORS只影响浏览器,只会打败他们的同源策略,所以黑客可能会抛出一个简单的代理服务器,并打败CORS。但是我从安全角度对CORS的态度感兴趣。 – Rob

回答

0

当我创建Web服务时,我离开了CORS,因为它是默认设置,只有当项目需要公共浏览器访问我们的服务时才添加它。为什么同源政策是默认的是另外一个问题。我从来没有见过阻止来自其他域的Ajax访问的优势。

+0

通过“公共浏览器访问”,你的意思是访问/无需任何身份验证。在允许CORS用于需要验证的REST API时,有什么我应该考虑的吗? – infinity

+1

认证将很重要,但要知道,不支持CORS的Web服务仍然可以公开使用,而不是商业Web浏览器。同源政策不过是一个薄弱的花园大门,并没有提供真正的安全保障。在制作外部Web服务时,我更关心的问题是提高清晰度,文档,版本和可伸缩性。 –

+2

[CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)是浏览器运行的Web应用程序的一个重要问题。如果我们没有同源政策,我们可以代表您在您浏览我们的网络应用的同时,在另一个网络应用上使用您的Cookie来调用Web服务。 –