什么是跨域
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。
如下给出了跨域的几种情况
http://www.a.com/https://ww.a.com/index.html 跨域 协议不同(http/https)
http://www.a.com/http://www.b.com/ 跨域 主域名不同(a/b)
http://www.a.com/http://t.a.com/ 跨域 子域名不同(www/t)
http://www.a.com:8080/http://www.a.com:8090/ 跨域 端口号不同(8080/8090)、
为什么会有跨域问题
核心原因在于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。
这里有一个关键词浏览器大家一定要记住,受跨域影响的只在浏览器范围。无论是前端和后端一定要记住限制的宿主。因为之前的工作中曾经不止一次的有经验不足的小伙伴问到,为什么接口给app用没问题,pc或者H5一调就不行,肯定是他们调用的问题。这里再提醒一下,native调用接口的时候是没有经过浏览器的。只有通过浏览器发起的ajax请求,在跨域的时候会受到同源限制。app navtive直接调用,或者server端发起的http请求等等均不会受到影响。
受到同源限制的范围
浏览器同源限制的地方主要有如下三处,因为本篇的标题已经明确是接口跨域相关所有后续的方案也只介绍ajax请求相关
Cookie、LocalStorage 和 IndexedDB
DOM
AJAX 请求
留言0