浏览器同源策略及跨域

 

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

问题2:为什么页面中的超链接能跳转到其他网站的页面?答:请牢记,同源限制的是js,超链接,图片,等通过src属性请求到的不受影响。

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

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

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

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

7,浏览器可以直接设置成允许跨域访问,各浏览器设置方式不同。

 

转载于:https://my.oschina.net/u/3394093/blog/3056879

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值