The Access-Control-Max-Age 这个响应头表示 preflight request (预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存多久。
该请求头是pre-flight请求在客户端(常见的如浏览器)缓存时间长度,该请求伴随POST、PUT请求存在,在POST请求发出之前一般会发送pre-flight请求来试探下服务器,看下是否有些请求头或者请求方法服务器端是否支持,如下图所示:
从上图可以看出服务器端支持POST、GET等请求,上面返回的
Access-Control-Max-Age:172800(单位为秒,超时时间为48小时)表示该pre-flight请求在客户端1小时后过期,在这个时间段内发送POST请求就不会再伴随着发送pre-flight请求,这样可以减少对服务器的压力,但是时间也不宜设置太大,由于频繁发包阶段,同时又修改了Cors配置。
当浏览器发送接口请求出现跨域问题时,目前的做法通常会在接口服务器增加如下配置。
Access-Control-Allow-Origin: *
浏览器在发送跨域请求并且包含自定义 header 字段时,浏览器会先向服务器发送 OPTIONS 预检请求(preflight request),探测该请求服务是否允许自定义跨域字段。
如果允许,则继续执行 POST、GET请求,否则返回提示错误。