(CORS) 浏览器如何知道何时进行飞行前请求

Posted

技术标签:

【中文标题】(CORS) 浏览器如何知道何时进行飞行前请求【英文标题】:(CORS) How does the browser know when to do a pre-flight request 【发布时间】:2015-09-03 01:47:10 【问题描述】:

所以我使用 CORS 已经有一段时间了,我只是阅读了它在幕后的工作原理。

我的问题是浏览器如何知道何时执行飞行前请求?

目前没有任何问题,因为浏览器似乎工作正常,我只是有点好奇。因为当我提出请求时,我没有给它任何关于它是否是 CORS 的信息,但它仍然知道要进行预飞行。

【问题讨论】:

【参考方案1】:

如果出现以下情况,浏览器将发送预检请求:

您将自定义标头添加到您的请求中 您使用 GET、HEAD 或 POST 以外的方法 您使用带有异常 Content-Type 的 POST。

更多详情:HTTP access control (CORS), Preflighted requests

【讨论】:

所以我猜这与它是否是 CORS 无关。视频中提到了这一点,但每个请求要么简单,要么不简单。简单请求是满足您上述条件的请求。非简单是不满足此要求的任何形式的请求。当浏览器发出非简单请求时,它会做出飞行前响应。这是一个浏览器功能,与 CORS 无关。不幸的是,我没有找到适当的链接来解释这一点,但如果有人正在阅读这篇文章,希望它会有所帮助! 在 Firefox 上,当附加了 xhr.upload.onprogress 监听器时也会发出预检请求。

以上是关于(CORS) 浏览器如何知道何时进行飞行前请求的主要内容,如果未能解决你的问题,请参考以下文章

未触发 CORS 检查的飞行前请求

如果请求来自 VueJS,NodeJs Passport 执行 CORS 飞行前

Apigee 飞行前选项请求

为啥这个简单的 CORS 请求会进行飞行前选项检查

在飞行前停止从 Firefox 到 Beego 服务器的 CORS 获取

当提供商因缺少授权标头而拒绝飞行前请求时,让客户端 CORS 工作