跨域总结

什么是跨域

跨域产生的原因是浏览器同源策略-SOP的限制,当前域名下的js只能读取同域的窗口属性。当使用js获取不同域名下的数据时,就会产生跨域的问题。只有双方在协议、主机和端口号都完全匹配的情况下,可以被授权访问。

需要注意的是,在服务器端是没有跨域之说的。比如我用node请求java数据时,即使两个的地址不一样,但是这个不是跨域,跨域是浏览器做的限制,防止获其他域名的cookies或者恶意的发送ajax请求等,别弄乱了,因为现在很多项目都为了前后端分离,用node做了中间层,但是对于网页来说,他是请求同域的nodejs,nodejs再转发请求,这里并没有发生跨域。至于java怎么判断这个请求是自己人,就是另一个话题了。咨询了同事,采用的一般是IP白名单或者api签名。

常使用的跨域方法有:

  1. JSONP
  2. CORS
  3. postMessage
  4. 子域名代理

JSONP

HTML脚本元素可以规避SOP的检查。即我们请求HTML、CSS、JS文件时浏览器不会做限制。所以运用这个特点,通过加载外部js文件的方式来向其他资源发出http请求。也正是是请求文件,所以JSONP只能GET而不能POST。简单说,jsonp就仅仅相当与在HTML标签了动态创建了一个

你可能感兴趣的:(浏览器,跨域)