第9章 跨域解决方案

9.1 什么是跨域

为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。这叫作同源策略,同源策略是浏览器安全的基石。

如果一个请求地址里面的协议、域名和端口号都相同,就属于同源。

举个例子,判断下面URL是否和http://www.a.com/a/a.html同源:

  • http://www.a.com/b/b.html,同源。
  • http://www.b.com/a/a.html,不同源,域名不相同。
  • https://www.a.com/b/b.html,不同源,协议不相同。
  • http://www.a.com:8080/b/b.html,不同源,端口号不相同。

依据浏览器同源策略,非同源脚本不可操作其他源下面的对象,想要操作其他源下的对象就需要跨域。综上所述,在同源策略的限制下,非同源的网站之间不能发送AJAX请求。如有需要,可通过降域或其他技术实现。