同源系统,也称为同源策略,是 Web安全领域的一个重要概念。它指的是 两个页面具有相同的协议、主机(通常指域名)和端口。如果这三个要素中的任何一个不同,那么这两个页面就被视为不同源。
具体来说,同源策略要求:
协议相同:
两个页面的HTTP协议版本必须一致,例如都使用HTTP或HTTPS。
主机相同:
两个页面的域名必须相同,包括子域名和主域名。例如,`http://www.example.com` 和 `http://example.com` 是同源的,但 `http://www.example.com` 和 `http://api.example.com` 不是同源的。
端口相同:
两个页面的端口号必须相同,默认情况下HTTP使用80端口,HTTPS使用443端口。如果两个页面的端口号不同,即使协议和主机相同,它们也被视为不同源。
同源策略的主要作用是 限制不同源页面之间的数据访问。这是为了防止恶意网站通过脚本访问或修改其他网站的数据,从而保护用户的安全和隐私。
例如,如果你在浏览器中打开 `http://www.example.com`,然后尝试通过JavaScript访问 `http://api.example.com` 上的数据,浏览器会阻止这种跨域请求,因为这两个URL不同源。
跨域的解决方法包括:
CORS(跨域资源共享):
服务器通过设置HTTP头部信息,允许特定的外部域访问其资源。
JSONP(JSON with Padding):
利用动态脚本标签(` -->