关于CORS的理解

42 阅读1分钟

CORS(Cross-Origin Resource Sharing)

1、同源策略

协议相同、域名相同、端口相同为同源,否则请求服务器出现跨域问题
tips:二级域名不同算同源么?可算可不算,严格意义上说不算

2、如何解决跨域

iframe
proxy代理
jsonp
cors

3、如何实现及工作原理

针对简单请求方法(get、post,且post请求必须为(x-www-form-urlencoded、form-data、text-plain)),浏览器会直接发送请求,无需预请求(preflight request)
预请求(preflight request),针对非简单请求,浏览器会先发送一个options的请求到服务器,询问是否允许请求,这个预请求会包含Access-Control-Request-Methods、Access-Control-Request-Headers
服务器接收到信息后,需要在返回浏览器的响应中添加Access-Control-Request-Origin、Access-Control-Request-Methods、Access-Control-Request-Headers、Access-Control-Max-Age等信息
浏览器检查预请求的响应,如果允许,则发送正常请求
如果请求头上需要携带cookie信息,那么服务端需要在响应头上添加Access-Control-Allow-Credentials:true,且浏览器端请求时需要添加上withCredentials:true
针对服务端,从安全的角度上来说Access-Control-Request-Origin不要设置为*