跨域

参考:
浏览器同源政策及其规避方法
前端常见跨域解决方案

同源政策

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

同源策略限制以下几种行为:

1.) Cookie、LocalStorage 和 IndexDB 无法读取
2.) DOM 和 Js对象无法获得
3.) AJAX 请求不能发送

跨域

1.1 什么是跨域

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

跨域原因说明 示例
域名不同 www.jd.com 与 www.taobao.com
端口不同 www.jd.com:8080 与 www.jd.com:8081
域名和域名ip http://www.baidu.com/index.html 与http://180.149.132.47/test.js
二级域名不同 www.item.jd.com 与 www.miaosha.jd.com
协议 http与https

如果域名和端口都相同,但是请求路径不同,不属于跨域,如:

www.jd.com/item
www.jd.com/goods

1.2 为什么有跨域问题?

跨域不一定会有跨域问题。

因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是于当前页同域名的路径,这能有效的阻止跨站攻击

因此:跨域问题 是针对ajax的一种限制。

但是这却给我们的开发带来了不便,而且在实际生成环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,怎么办?

1.3 解决跨域问题的方案

目前比较常用的跨域解决方案有3种:

  • Jsonp

    最早的解决方案,利用script标签可以跨域的原理实现。

    限制:

    • 需要服务的支持
    • 只能发起GET请求
  • nginx反向代理

    • 思路是:利用nginx反向代理把跨域为不跨域,支持各种请求方式
    • 缺点:需要在nginx进行额外配置,语义不清晰
  • CORS

    规范化的跨域请求解决方案,安全可靠。

    • 优势:在服务端进行控制是否允许跨域,可自定义规则; 支持各种请求方式

    • 缺点:会产生额外的请求

上一篇:下载安装jd-gui(Mac)


下一篇:Java反编译 jar包