1、我们在开发环境下运行,每一次请求,发送一次请求,后来有测试工程师说,为什么每次请求都会发送二次请求,我只点击了一次,却发送二次请求,为什么?
2、第一次发送的是OPTIONS请求,然后才是正常的请求,返回200
3、OPTIONS是一种“预检请求”,浏览器在处理跨域访问的请求时,会先判断请求为复杂请求,这样就会向服务器发送一条预检请求,根据服务器返回的内容浏览器判断服务器是否允许该请求访问。如果web服务器采用cors的方式支持跨域访问,在处理复杂请求时这个预检请求是不可避免的。
4、解决方法,一般这种现象是在Nginx环境下运行时出现的,那我们就要设置nginx相关的参数,来处理这个问题。
#设置一天的过期时间
add_header Access-Control-Max-Age 86400;
重启服务器,现在再次点击请求只发生一次了请求。