[TOC]
同源策略
跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略,是用于隔离潜在恶意文件的关键安全机制。当A、B两个网站属于不同域时,来自于A网站页面中的JavaScript代码访问B网站时,浏览器会拒绝该访问。同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,很容易受到XSS、CSRF等安全攻击。 所谓同源,是指:两个网页,协议(protocol)、端口(port)、和主机(host)都相同.
如果非同源,以下三种行为受到限制:(1) Cookie、LocalStorage 和 IndexDB 无法读取。
(2) DOM 无法获得。
(3) AJAX 请求不能发送。
例如:和http://www.test.com/test.html 作为比较
URL | 是否跨域 | 原因 |
---|---|---|
http://www.test.com/index.html | 否 | 协议、域名、端口相同 |
https://www.test.com/index.html | 是 | 协议不同(HTTPS) |
https://www.abc.com/index.html | 是 | 域名不同 |
http://www.aliyun.com:81/test.html | 是 | 端口不同 |
同源策略中的共享内容
cookie: 服务器写入浏览器的一小段信息,只有同源的网页才能共享;
DOM: 两个网页同源,可以获取到对方的DOM 。
跨域问题解决方法
解决跨域问题的几种方法如下
JSONP 跨域
JSONP是服务器与客户端跨源通信的常用方法
JSONP原理就是动态插入带有跨域url的