认识
2024年03月20日
一、同源策略
所谓同源是指"协议
+域名
+端口
"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
二、跨域策略
2.1 跨域限制的内容
-
DOM
节点 -
AJAX Fetch
请求 -
Cookie
、LocalStorage
、IndexedDB
等存储性内容
2.2 允许跨域的标签
-
<img src='' />
-
<a href=''></a>
-
<script src=''></script>
-
<form url=''/>
-
<iframe url=''/>
总结: 带src属性的标签都不受同源策略的影响
2.3 实现跨域的方案
-
JSONP
跨域方案 -
CORS
跨域 -
postMessage
跨域方案 -
document.domain
跨域方案 -
window.name
跨域方案 -
location.hash
跨域方案 -
http-proxy
跨域方案 -
nginx
跨域方案 -
websocket
跨域方案
三、问题
3.1 为什么浏览器不支持跨域?
对于本地存储(Cookie
、LocalStorage
、IndexedDB
)等存储性内容,DOM
节点 等页面元素内容 ,以及 Ajax
网络请求内容 等需要保证来自不同源对象互补干扰,保证页面最基本的安全。如果不限制源,那么页面将会一片混乱----本地存储的数据所有页面共享、DOM
页面元素特别是 script
脚本在不同页面都可加载、Ajax
任意请求