之前我们已经了解到跨域的实现方式jsonp,今天来讲讲另外一种:CORS.
什么是CORS
CORS:全称为 Cross-origin resource sharing,即跨域资源共享,它允许浏览器向跨域服务器发送 Ajax 请求,克服了 Ajax 只能同源使用的限制。
实现原理

当客户端发送请求时,若浏览器端发现该请求为跨域的,则会自动在请求头中添加origin字段,origin值是发送请求的页面地址,服务器端来通过其来决定是否同意这次请求,无论同意与否,服务器都会返回一个http响应,那么浏览器如何判断服务器端是否同意呢?服务器端如果同意这次请求,则会在响应头中添加Access-Control-Access-Origin字段,于是,我们只要在服务器端设置该响应头就可以实现跨域资源共享。
这种方法不需要去修改相应的ajax代码,只需要在服务器端设置一些属性即可以实现:
1.在请求头中设置允许哪些客户端访问:
这里以express框架做个实例,代码如下:
2.设置允许客户端使用哪些方法
这样就完成了,是不是很简单。
与jsonp对比
CORS和JSONP都是为了使web浏览器能够跨源请求,使用目的相同,但是比JSONP更强大。JSONP只支持GET请求,而CORS支持所有类型的HTTP请求,不过JSONP的优势在于支持老式浏览器以及可以向不支持CORS的网站跨源请求。