跨域访问
简介
跨域
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。
资源跳转: A链接、重定向、表单提交
资源嵌入:
<link>、<script>、<img>、<frame>
等dom
标签,还有样式中background:url()、@font-face()
等文件外链脚本请求:
js
发起的ajax
请求、dom
和js
对象的跨域操作等
同源策略
其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
同源策略限制以下几种行为:
Cookie
、LocalStorage
和IndexDB
无法读取DOM
和Js
对象无法获得AJAX
请求不能发送
跨域解决方案
通过jsonp跨域
document.domain + iframe跨域
location.hash + iframe
window.name + iframe跨域
postMessage跨域
跨域资源共享(CORS)
nginx代理跨域
nodejs中间件代理跨域
WebSocket协议跨域
参考
最后更新于
这有帮助吗?