跨域问题,是web开发常见的一个问题。自以为工作多年,解决跨域这种“小问题”自是不在话下。但是朋友的一次求助让我发现自己只知其然而不知其所以然。
下面是事情经过,可以直接跳过本段
事情的的经过是:某天A自己设计了一个网站,请B帮忙开发部署。一切都比较顺利,即将完工的时候出现了一个问题。A的网站有两个域名,一个是主站:www.xxx.com ,另一个是二级域名help.xxx.com。现在有一个在help域名下的Js请求了www下的一个接口。接口返回请求跨域,所以来找到我帮忙解决。我信心满满的以为跨域这种小问题,十分八分就搞定了,结果搞了2个多小时才搞定。其中固然有对PHP不熟悉、对前端不熟悉、对Apache服务器配置不熟悉(博主擅长java,服务器熟悉Nginx)当然客观原因是非常多,但这不是借口。
如果当时对跨域有一个系统的认识,就不会搞这么久。
下面进入正题
什么是跨域请求?
首先说明一点,跨域请求并非是一种错误,而是一种安全策略导致的现象。本质来说,跨域请求和普通HTTP请求并没有不同,而是因为浏览器的一个安全策略导致的一部分特殊请求成为了跨域请求。
这个安全策略就是: 浏览器的同源策略 (参考Mozilla)
<