首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同源策略和CORS (跨域资源共享)

同源策略和CORS (跨域资源共享)
EN

Stack Overflow用户
提问于 2013-02-04 14:12:07
回答 1查看 22K关注 0票数 49

我在试着理解CORS。根据我的理解,它是一个安全性在浏览器中实现的一种机制,以避免对除用户打开的域(在url中指定)之外的域的任何AJAX请求。

现在,由于这一限制,许多CORS被实现来使网站能够进行跨域请求。但据我所知,CORS的实现违背了“同源策略”的安全目的。SOP。

CORS只是为了提供对服务器想要服务的请求的额外控制。也许它可以避免垃圾邮件发送者。

来自Wikipedia

要发起跨域请求,浏览器会发送带有Origin HTTP header的请求。此标头的值是为页面提供服务的站点。例如,假设有一页位于http://www.example-social-network.com尝试访问online-personal-calendar.com中的用户数据。如果用户的浏览器实现了CORS,则会发送以下请求头部:

来源:http://www.example-social-network.com

如果online-personal-calendar.com允许该请求,它会在响应中发送Access-Control-Allow-Origin标头。标头的值指示允许哪些源站点。例如,对前一个请求的响应将包含以下内容:

Access-Control-Allow-Origin:http://www.example-social-network.com

如果服务器不允许跨域请求,浏览器将向example-social-network.com页面发送错误,而不是online-personal-calendar.com响应。

要允许访问所有页面,服务器可以发送以下响应头:

Access-Control-Allow-Origin:*

但是,这可能不适合需要考虑安全性的情况。

我在这里漏掉了什么?CORS的目的是保护服务器的安全还是保护客户端的安全。

EN

回答 1

Stack Overflow用户

发布于 2013-02-04 14:31:37

同源策略(SOP)是浏览器实现的通过跨站点脚本(XSS)防止漏洞的策略。这主要是为了保护服务器,因为在许多情况下,服务器可以处理身份验证、cookie、会话等。

跨地域资源共享(CORS)是目前为数不多的缓解SOP的技术之一。由于SOP在默认情况下是“开”的,因此在服务器端设置CORS将允许通过XMLHttpRequest将请求发送到服务器,即使该请求是从不同的域发送的。如果您的服务器打算为来自其他域的请求提供服务(例如,如果您提供API),这将变得非常有用。

我希望这能澄清SOP和CORS之间的区别,以及它们各自的用途。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14681292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档