为何会出现跨域
比如我们页面地址是http://client.cors.com:8000/greeter.html,而我们请求服务端接口地址是http://server.cors.com:3000/data,当我们发送请求之后会在浏览器控制台看到如下提示:
很明显发生了跨域,提示在说少了一个Access-Control-Allow-Origin头。
跨域是由浏览器同源策略引起的,是指页面请求的接口地址,必须与页面url地址处于同域上(即域名,端口,协议相同)。这是为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对JavaScript施加的安全限制。同源策略是浏览器最核心也最基本的安全功能,Web是构建在同源策略基础之上的,浏览器是针对同源策略的一种实现。
所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port),举个例子:
总结一下:跨域只是浏览器单方面的行为。当在一个页面需要向服务器发送请求时,不管跨没跨域首先请求是会发出去的,另外服务器也会顺利接收到请求并且响应,那么问题在哪?
是最后一步——浏览器接收响应数据!