美文网首页
HTTP访问控制(CORS)

HTTP访问控制(CORS)

作者: singno | 来源:发表于2016-11-09 11:08 被阅读0次
什么是CORS?

CORS(Cross-Origin Resource Sharing ) 全称“跨域资源共享”,它允许浏览器向跨站服务器发送XHR请求。CORS的出现,使得网站开发者可对受信任的站点(域名)绕过浏览器同源策略的限制,提供了极大的灵活性。

什么是同源策略

出于安全的考虑,浏览器通过XHR向服务器发送请求时,必须遵循同源策略。所谓“同源”,是指【域名】,【协议】,【端口】相同。

如果没有同源策略

在解释同源策略为什么很重要之前,我们先讨论另外一个问题:为什么前端使用cookie校验登录态,而客户端使用URL中的token?

我见过最多的回答是:浏览器已经实现了cookie的整一套机制,没必要再用token那一套,而客户端要自己实现一套cookie机制太麻烦了。

上面的回答对吗?我认为太表象了,只回答了果,而非因。为什么浏览器要采用cookie机制实现登陆校验,才是问题的关键。

我认为造成两者差异的其中一个关键点在于:客户端的url,是不可见的,而浏览器是可见的。cookie(token)是用户登录的生命线,试想下http://www.jianshu.com/index.php?token={secret_token}是多么美丽的画面。

如果我们继续深入思考下去,能找到更多的原因,只是本篇重点不在此,不再赘述。

通过上面的说明,我们明白了cookie是网站登录的前提,是时候回答【如果没有同源策略】的危害了。

假如你的浏览器同时开了两个tab: A 和 B。A登录了qq.com,如果浏览器没有同源策略限制,B此时就可以不断向qq的服务器发送跨域请求(获取用户资料、消费Q币、发表QQ空间、删除好友等等)。你说B没有qq.com的登陆信息,不能做到?那我建议你再好好复习一遍cookie机制。

同源策略也带来不便

假设你有3个域名:a.example.com | b.example.com | c.example.com , 三个都是你的服务,但彼此间无法跨域请求,作为网站管理端,怎一个“蛋疼”了得?

讲到这里,又要插一句题外话了,在CORS出现之前,站点间是怎样跨域通信的?没错,就是大名鼎鼎的JSONP。JSONP你听过,但使用该技术需要防范CSRF攻击你了解过吗?这个话题我们下次再聊。

篇幅太长,就此打住,下一篇我们再具体讲解服务端CORS怎样配置。

相关文章

  • HTTP 访问控制(CORS)

    参考原文 当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个 跨域 HTTP 请求。...

  • HTTP访问控制(CORS)

    简单请求 触发简单请求 某些请求不会触发 CORS 预检请求。本文称这样的请求为“简单请求”,请注意,该术语并不属...

  • HTTP访问控制(CORS)

    引用自HTTP访问控制(CORS) 当 Web 资源请求由其它域名或端口提供的资源时,会发起跨域 HTTP 请求(...

  • HTTP访问控制(CORS)

    传送门:Cross-Origin Resource Sharing (CORS) 当一个资源从与该资源本身所在的服...

  • HTTP访问控制(CORS)

    在Web开发中,经常会碰到跨站请求。比如A域名下的站点http://domainA通过AJAX请求B域名下的站点h...

  • HTTP访问控制(CORS)

    什么是CORS? CORS(Cross-Origin Resource Sharing ) 全称“跨域资源共享”,...

  • HTTP访问控制 - CORS

    一、什么是CORS 域:在浏览器里,两个资源拥有相同的域名、协议、端口,成为同域,其中一个不同即成为跨域。现代浏览...

  • CORS 访问控制备忘录

    关于 CORS 的基础知识在 MDN上有很详细的描述HTTP访问控制(CORS)和可能会有的隐患。CORS机制及其...

  • 跨域

    参考资料 HTTP访问控制(CORS)跨域解决方案跨域详解

  • 再谈CORS

    承接上文 HTTP访问控制(CORS) 关于CORS的说明,这篇MDN文章 论述地非常详细、精彩,建议大家先阅读几...

网友评论

      本文标题:HTTP访问控制(CORS)

      本文链接:https://www.haomeiwen.com/subject/xxvzuttx.html