浏览器跨域访问

一、关于浏览器

对于Web应用来说,浏览器是最重要的客户端。

目前浏览器五花八门多得不得了,除了Chrome、IE、Firefox、Safari、Opera这些国外的浏览器外,百度、腾讯、360、淘宝、搜狗、傲游之类的,反正能做的都做了。

浏览器虽然这么多,但浏览器内核主要就以下4种:

Trident:IE使用的内核。
Gecko:Firefox使用的内核。
WebKit:Safair和Chrome使用的内核。WebKit由苹果发明,Chrome也用了,但是Google又开发了V8引擎替换掉了WebKit中的Javascript引擎。
Presto:Opera使用的内核。

国内的浏览器基本都是双核浏览器,使用基于WebKit的内核高速浏览常用网站,使用Trident内核兼容网银等网站。

二、同源策略

同源策略是浏览器最基本的安全策略,它认为任何站点的内容都是不安全的,所以当脚本运行时,只被允许访问来自同一站点的资源。

同源是指域名、协议、端口都相同。

1、同源策略的限制范围

(1)cookie,LocalStorage,和IndexDB 无法读取

(2)DOM 无法获得

(3)Ajax请求不能发送

2、没有同源策略限制的两大危险场景
  1. 没有同源策略限制的接口请求:

cookie一般用来处理登录场景,目的是让服务器知道谁发的这次请求。如果你请求接口进行登录,服务端验证通过后会在响应头加入 Set-Cookie 字段,然后下次再发请求的时候,浏览器会自动将cookie 附加在HTTP请求的头字段Cookie中,服务端就知道这个用户已经登录过了。问题也就来了,如果你登录一个银行网站A,然后又进入一个非法网站B,如果没有同源策略,那么非法网站就会获取你登录A 网站的Cookie,这样一来不发网站就可以登录你A网站的账号为所欲为。这就是传说中的 CSRF攻击。

  1. 没有同源策略限制的DOM查询:

最常见的就是钓鱼网站。 有一天你收到一封邮件,说你的银行账户有风险,干净登录www.yinghang.com 进行修改,你打开界面发现和你以前登录的网站一模一样,然后你输入账户和密码登陆后发现账户余额正常,就离开了。可是你平时登录银行账户的网站是www.yinhang.com。这个钓鱼网站就获取了账户和密码。

如果没有同源策略,就会发生下面这样的问题:

  • 恶意网站用一个iframe把真实的银行登录页放到他的页面上,当用户使用用户名密码登录时,父页面的javascript就可以读取到银行登录页表单中的内容。

  • 甚至浏览器的1个Tab页打开了恶意网站,另一个Tab页打开了银行网站,恶意网站中的javascript可以读取到银行网站的内容。这样银行卡和密码就能被轻易拿走。

三、跨域访问

由于同源策略的原因,浏览器对跨域访问做了很多限制,但有时我们的确需要做跨域访问,那要怎么办?主要有以下几种情况:

1、iframe的跨域访问

同域名下,父页面可以通过document.getElementById(‘_iframe’).contentWindow.document访问子页面的内容,但不同域名下会出现类似下面的错误:

Uncaught SecurityError: Blocked a frame with origin “http://a.com” from accessing a frame with origin “http://b.com”. Protocols, domains, and ports must match.

有两种解决方法&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值