天天看点

跨域实现方式CORS

之前我们已经了解到跨域的实现方式jsonp,今天来讲讲另外一种:CORS.

什么是CORS

CORS:全称为 Cross-origin resource sharing,即跨域资源共享,它允许浏览器向跨域服务器发送 Ajax 请求,克服了 Ajax 只能同源使用的限制。

实现原理
跨域实现方式CORS

当客户端发送请求时,若浏览器端发现该请求为跨域的,则会自动在请求头中添加origin字段,origin值是发送请求的页面地址,服务器端来通过其来决定是否同意这次请求,无论同意与否,服务器都会返回一个http响应,那么浏览器如何判断服务器端是否同意呢?服务器端如果同意这次请求,则会在响应头中添加Access-Control-Access-Origin字段,于是,我们只要在服务器端设置该响应头就可以实现跨域资源共享。

这种方法不需要去修改相应的ajax代码,只需要在服务器端设置一些属性即可以实现:

1.在请求头中设置允许哪些客户端访问:

这里以express框架做个实例,代码如下:

2.设置允许客户端使用哪些方法

这样就完成了,是不是很简单。

与jsonp对比

CORS和JSONP都是为了使web浏览器能够跨源请求,使用目的相同,但是比JSONP更强大。JSONP只支持GET请求,而CORS支持所有类型的HTTP请求,不过JSONP的优势在于支持老式浏览器以及可以向不支持CORS的网站跨源请求。

继续阅读