Cors 访问控制是否允许包含选项的方法

Cors 访问控制是否允许包含选项的方法,cors,Cors,CORS客户端将在实际请求之前发出一个选项请求,以观察返回的Access Control-*头 如果我希望客户端能够发布端点,那么使用 Access-Control-Allow-Methods: HEAD, GET, POST 或者我还必须明确允许选项 Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST 对于典型的CORS主机设置,GET不需要OPTIONS,但是POST可以,具体取决于内容类型和/或编码。我建议您启用选项 您可以阅读

CORS客户端将在实际请求之前发出一个选项请求,以观察返回的Access Control-*头

如果我希望客户端能够发布端点,那么使用

Access-Control-Allow-Methods: HEAD, GET, POST
或者我还必须明确允许
选项

Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST

对于典型的CORS主机设置,
GET
不需要
OPTIONS
,但是
POST
可以,具体取决于
内容类型和/或编码。我建议您启用
选项


您可以阅读,了解需要选项的复杂情况,或者您可以启用它。

谢谢,我这边的坏例子,更不用说这篇文章了。我会更新这个问题,让它更有意义。问题是是否需要选项。你为什么建议启用选项?我回答了这个问题,并建议你应该启用它,即使你认为你可能不需要它(现在)。令人惊讶的是,需求变化很小,然后你发现了一个很难找到的bug。现在启用选项可能会让您以后头疼。您链接的CORS规范第7.1.5节有一个示例,表明在Allow Methods标题中不需要选项。我理解。就像我说的,你现在不需要选择,但你很可能很快就会。。。然后,你必须返回并重新计算所有内容。无论访问控制允许方法是否包含选项,CORS飞行前选项请求都将有效。因此,无需在“访问控制允许方法”值中包含选项。或者,更确切地说,如果您希望允许CORS预选选项以外的普通选项请求,则只需要在浏览器行为和调用流方面考虑:(1)浏览器首先将CORS预选选项请求发送到远程服务器,以确定服务器允许的方法,然后(2)浏览器从远程服务器获取访问控制允许方法。因此,在步骤1,在发送CORS飞行前选项请求之前,浏览器无法提前知道在步骤2,从远程服务器发送回来的访问控制允许方法是否包含选项。因此,不管怎样,浏览器总是只发送CORS飞行前选项请求。