对于可能修改服务器上数据的某些类型的请求(使用 PUT、DELETE 等 HTTP 方法或使用不会自动包含在每个请求中的标头的请求),浏览器将在发出实际请求之前首先发送“预检”请求。此预检请求是一个 HTTP OPTIONS 请求,其目的是向服务器检查实际请求是否可以安全发送。 预检请求包括描述 HTTP 方法的标头和实际请求的标头。
接下来会发生以下情况:
服务器响应:如果服务器支持 CORS 策略和实际请求,它会使用指示允许哪些方法和标头的标头响应预检请求。这可能包括诸如Access-Control-Allow-Methods和 之类的标头Access-Control-Allow-Headers。
浏览器决策:根据服务器对预检请求的响应,浏览器决定是否继续处理实际请求。如果服务器的响应表明该请求被允许,则浏览器发送该请求;如果不是,浏览器将阻止该请求,并且您将看到与 CORS 相关的错误