http你不得不知道的那些事(一)--同源策略(1)
来源:互联网 发布:幼儿编程app 编辑:程序博客网 时间:2024/06/05 00:44
前段时间详细的学习了一下http相关的东西,特别是看了http权威指南,感觉收获良多,在未来的一段时间我将把自己所学到的相关东西分享出来,先捡重要的(我自认为的)来说。本章讲述同源策略,希望对大家有所帮助。
基本上每个从事过网络编程,接触过浏览器的程序员都知道浏览器的同源策略。但是深究一下就不一定有很多人知道这是个什么东西了,只是囫囵吞枣的知道不准非同域的请求,知道部分解决方法,例如jsonp啦,带有src的标签啦,ducument.domain之类的东西。但是具体这个东西怎么产生了,又是为什么会这样,不同源之间请求到底发生了什么事,等等这些问题就不是那么多人清楚了。本章会详细分析这些问题,讲述为什么会这样,为什么要这样做?做到授人以渔,当然本文纯属一家之言,参考了一些书和网络资料,甚至包含部分自行理解的,因此可能存在错误疏漏,殷切的希望您能帮我斧正,thx。讲同源策略之前,还是照顾下一些初学者,把一些基本概念稍微提一下。同源的概念:同源是指,域名,协议,端口都相同。同源策略的概念呢?网上找了很多都没有直接定义什么是同源策略,只是讲了同源的概念,讲了同源策略能做什么,如:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现(百度百科)。讲的东西含糊不清,难以理解,我这里就班门弄斧自己总结一下。同源策略是指一个源的文档或者脚本不准操作其他源的资源。我想此时此刻的你一定会有很多问题,觉得不科学,不对,为什么呢?我script从cdn上加载进来的jquery不是还是用的好好的,操作页面简直不要太顺畅,现在你给我说不准操作,我首先就不同意!请看下面这句话:现代浏览器在安全性和可用性之间选择了一个平衡点。在遵循同源策略的基础上,选择性地为同源策略“开放了后门”,例如img script style等标签,都允许垮域引用资源,严格说这都是不符合同源要求的。什么???浏览器自己搞的鬼,他们都是非主流,都是叛逆?这就要讲讲同源策略的来源了。同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。啥意思呢?其实就是netscape提出来一个概念,然后各个浏览器厂商自行实现的一套东西,很明显大家都为了方便在这个基础上做了扩展,后来觉得这个扩展很好用,大家都接受,因此就成了默认的标准。叫什么来着,三人成虎。但是,这些也不是完全违背同源策略,只能是引用这些资源而已,并不能读取这些资源的内容。既做到了方便,又做到了相对的安全。不信?你可以使用ajax重新请求一下这个资源,看行不行。很明显请求不到吧,为什么?下面又要放大招了,又是自己一套东西!ajax请求的资源默认是可以操作的,所以ajax必须严格遵守同源策略!是的,你没有看错,又是我胡诌的一套东西,你心中有一万个问题想要扔给我,最简单一个就是,我大cors如何解释?如何解释?额,现在又必须讲一讲cors了。不过篇幅到现在为止已经很长了,我想很多看官老爷已经有点不太耐烦了,好吧,其实放了两次大招我也有点累了。这篇就先到这里吧,下篇接着讲,thx。
阅读全文
0 0
- http你不得不知道的那些事(一)--同源策略(1)
- http你不得不知道的那些事(一)--同源策略(2)
- http你不得不知道的那些事(二)--CSRF
- http你不得不知道的那些事(三)-XHR
- http你不得不知道的那些事(四)-http报文
- http你不得不知道的那些事(六)--请求响应细节
- http你不得不知道的那些事(七)--跨域请求
- http你不得不知道的那些事(八)--TCP三次握手
- http你不得不知道的那些事(九)-缓存细节
- http你不得不知道的那些事(五)-报文头
- 你不得不知道的String类那些事!!
- MySQL中关于JSON你不得不知道的那些事!
- MySQL中关于JSON你不得不知道的那些事!
- 何谓同源策略以及解决同源策略的方法(ajax方法和http的方法)
- 你所不知道的Html5那些事(一)
- “互联网+”运营新媒体,那些不得不知道的策略!
- 那些你不知道的项目管理细节(一)
- 你不知道XML编程的那些事儿(一)
- Android 实时监听耳机拔除
- 基于 STM32 的硬件 I2C 读取 MPU6050 数据
- Intent 使用方法详解
- 再按一次推出程序
- gulp实战(4)
- http你不得不知道的那些事(一)--同源策略(1)
- Superset的各种疑难解答
- jquery手指触摸滑动放大图片的方法(比较靠谱的方法)
- C语言学习内容总结2017/10/21
- highcharts使用钻取图时去掉横坐标上的超链接样式 。
- nifi中使用PutElasticsearch
- react-native纯JS上下拉刷新组件
- Redis模糊操作
- 一大波代码------>自定义圆