同源:两 URL 的 protocol、port 、host 相同,则同源。
浏览器同源策略:是浏览器限制不同源的资源交换的一种安全机制。这里资源包括脚本,Document,Cookie、LocalStorage 和 IndexDB 等。
跨域:所请求 url 与当前页面 url 不同源即为跨域。
同源策略,限制如下:
- 允许跨域写操作(Cross-origin writes),例如链接 (links),重定向以及表单提交
- 允许跨域资源嵌入(Cross-origin embedding),支持标签 script、link、img、video、audio、object、embed、applet、@font-face、iframe。
- 不允许跨域读操作(Cross-origin reads),不允许操作其它源的 dom,不允许主动读取其它源的资源,ajax 请求带 cookie 可以发出去,即使服务器端返回了正确的结果,浏览器也会拒绝处理服务器端返回的数据。
跨域资源共享:CORS(Cross-origin resource sharing)是一个 W3C 标准,定义了在必须访问跨域资源时,浏览器与服务器应该如何沟通,所有浏览器都支持该功能,IE 浏览器不能低于 IE10。
总结:因为浏览器制定了同源策略,所以有跨域问题。所以不同浏览器的同源策略是不同的。本贴主要目的是澄清概念,很多开发只
知道有跨域问题,但是对概念不清,所以也就不能很好地解决这个问题,跨域方法可自行上网搜索。