浏览器同源策略及跨域

 

问题1:同源策略的核心是什么?答:脚本(也就是js)不能操做和查看不一样域的资源。html

问题2:为何页面中的超连接能跳转到其余网站的页面?答:请牢记,同源限制的是js,超连接,图片,等经过src属性请求到的不受影响。前端

问题3:能在具体说说到底限制什么吗?答:能,主要限制两个操做,1,限制js操做不一样域中html的DOM,也就是说,你网易域名下的js不能读取和修改百度域名下的页面节点。2 限制xmlhttprequest访问不一样源的资源,xmlhttprequest是什么?请求资源的对象, ajax就是封装了这个对象,而后你就能快乐的请求后台了。ajax

问题4:如何实现跨域?答:实现跨域方式有不少,好比问题2中已回答,超连接或者图片中的src不受影响,因此能够把脚本写到src中,没见过谁用。主流cors方式,跨域资源请求。 如何实现呢?浏览器自带实现,若是你只写前端什么都不用作,直接写你请求的地址就好了。只须要在服务端设置:容许跨域请求。src实现跨域的方法是jsonp。原理是js调用src属性,而后接收参数。虽然正常编程不多有人用,但黑客却能用这个漏洞威胁网站安全。后台防范也很简单,由于jsonp方式只能是get请求,因此接口限制post就能防护。编程

5,form表单方式一样不会受到跨域影响,无论是get,仍是post方式。用ajax方式提交,跨域会受到拦截,控制台会给出提示,不过这个限制,只是限制了返回数据的读取操做,并非限制发送请求。也就是说,跨域post一个数据的添加(后台并未容许跨域),后台正常会执行新增方法,只是返回的success结果js不能读取。即,带有修改数据功能的接口(新增,修改,删除)(post,或者get方式),系统的跨域的限制并不能保障安全。json

6,上述的 ajax,get,post提交不能限制跨域的请求。但 delete 和put方式会被拦截。这两个方法不多有人用,几乎都是post走天下,全部的功能由接口决定。不用请求方式区分是修改,删除,查询。因此只用同源策略作到安全不现实。跨域

7,浏览器能够直接设置成容许跨域访问,各浏览器设置方式不一样。浏览器

相关文章
相关标签/搜索