我们都知道,ajax不能做跨域请求,我们首先想到的是jsonp,但是问题来了,它只是支持get请求,如果要传输数据量比较大,get请求就不能满足我们的需求了,我们需要使用ajax的post跨域请求,如何实现呢,我们可以通过cors。
CORS的原理:
cors是一种跨域访问机制,可以让ajax实现跨域访问,CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,我们只需要向服务器发送一个响应标头即可(ie8以上才支持)
设置,“*”号表示允许任何域向我们的服务端提交请求,也可以设置成指定的域名。
- 刚刚说到的兼容性。CORS是W3C中一项较新的方案,所以部分浏览器还没有对其进行支持或者完美支持,详情可移至 http://www.w3.org/TR/cors/
- 安全问题。CORS提供了一种跨域请求方案,但没有为安全访问提供足够的保障机制,如果你需要信息的绝对安全,不要依赖CORS当中的权限制度,应当使用更多其它的措施来保障,比如OAuth2。
cors在移动终端支持的不错,可以考虑在移动端全面尝试;PC上有不兼容和没有完美支持,所以小心踩坑。当然浏览器兼容就是个伪命题,说不准某个浏览器的某个版本就完美兼容了,说不准就有点小坑,尼玛伤不起!
jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择;
配合新的JSAPI(fileapi、xhr2等)一起使用,实现强大的新体验功能。