CORS全称叫跨域资源共享(Cross-origin resource sharing),本质是服务器的资源是否允许被公开,服务器根据请求参数判断并将结果返回给浏览器,Access-Control-Allow-Origin只能返回一个源,但是服务器可以根据参数返回浏览器想要的源地址。
原理是在正式的跨域请求之前,先发送了一个OPTIONS请求去询问服务器是否允许接下来的跨域请求
OPTIONS请求里新增了几个字段:
Origin:发起请求原来的域
Access-Control-Request-Method:将要发起的跨域请求方式(GET/PUT/POST/DELETE/······)
Access-Control-Request-Headers:将要发起的跨域请求中包含的请求头字段
服务器在响应字段中来表明是否允许这个跨域请求,浏览器收到后检查如果不符合要求,就拒绝后面的请求
Access-Control-Allow-Origin:允许哪些域来访问(*表示允许所有域的请求)
Access-Control-Allow-Methods:允许哪些请求方式
Access-Control-Allow-Headers:允许哪些请求头字段
Access-Control-Allow-Credentials:是否允许携带Cookie