Friday, November 17, 2017

CORS简介

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

CORS只针对浏览器,因为浏览器安全性的考虑,会拒绝向不允许访问的资源网站发送请求。过程是
1. 某网站的Ajax代码尝试去访问其他网站的资源(html,图片),
2. 这时候浏览器会自动加入先发一个CORS请求
3. 服务器whitelist了这个请求,返回response包含允许allow-origin=该网站的header。如果服务器不允许,浏览器收到response不含origin信息就会停止发送真正的请求。
4. 其后,每一个请求都会自动加入allow-origin的header。

其实,这只是浏览器的限制,如果用fiddler或者postman,甚至HTTPclient的lib是不会有这些限制的。

HTTP方法包括GET, POST, PUT, DELETE, OPTIONS

CORS的Jersey(Restful web service in Java)实现
https://gist.github.com/yunspace/36b0546245c5348a34ed

ref:
http://www.ruanyifeng.com/blog/2016/04/cors.html