关于跨域的杂谈
关于跨域的杂谈
我们经常在交流CORS的问题中,经常使用跨域这个词,而CORS全称是Cross-Origin Resource Sharing,问题来了,为什么不叫跨源?
探究这个问题,我想离不开追溯历史。
跨域这个词的历史
要追溯这个词的历史有点难以下手,百度没有给出什么方法去追溯,但Google有
同源策略的历史
1995 年,网景公司的 Navigator 浏览器引入了同源策略。
同源策略的基本原则是,Web 浏览器只允许来自同一来源的脚本访问彼此的文档和数据。同源策略是通过比较两个 URL 的协议、主机名和端口号来实现的。
2002 年,W3C 发布了第一个正式的同源策略标准。在此之前,各浏览器厂商实现同源策略的方式存在差异。
思考
结合Google的关键词频率图,的确符合同源策略的历史。
可见同源策略标准出现时,就已经开始使用跨域这个词了,这是为什么?
不符合同源策略的情况的历史
从同源策略的要求上出发,再结合历史去考虑的话,分三个情况考虑。
跨域
早期的Web应用是前后端不分离的,而且普遍使用HTTP协议。
那么从Web应用上出现违反浏览器同源策略的原因就主要出在主机名即域名上。
这样一来,就很符合跨域这个词的字面意思了。
跨协议
SSL诞生于1994年的网景公司之手,于2000年被国际化接纳改造发布为TLS。
但普及则是发生在 2015 年 Google 宣布将 HTTPS 网站作为搜索排名算法的一个因素。
普及的同时也提高了违反同源策略中的协议一致的情况,开始大量出现跨协议。
跨端口
前后端分离的开发模式开始流行的时间在2013年左右,直到现在已经成为非常流行的开发模式。
前后端分离了之后,也伴随着大量发生跨端口的情况出现。
结论
最早出现的是跨域,从 2002 开始直到 2013 年左右开始大量出现跨端口再到 2015 年左右开始大量出现跨协议。
我的理解是,跨域这个词最早是描述不符合同源策略中的域名要求,随后被被广泛使用。
就算出现了跨端口、跨协议,我推测,那个时候跨域这个词的使用已经延申到了违反同源策略这件事本身。
那么我认为这是将词泛化与滥用,跟动漫这个词是类似的情况。