【发布时间】:2019-10-07 01:01:42
【问题描述】:
如果我理解正确,则会发送一个预检 OPTIONS 请求,以询问“这里允许什么?”。然后,一旦响应到来,如果允许,调用站点就会发送 POST 请求(或 GET,但在我的情况下它是一个帖子)。我发现,至少对于 Azure Function Apps,OPTIONS 请求正在执行我希望只有 POST 才能执行的代码。我相信是这种情况,因为一旦我添加了一些空检查(因为 OPTIONS 请求在正文中没有有效负载),一切正常。
我想知道这是否是标准的。
在我看来,如果我在不使用 Azure Function Apps 的情况下编写了 API,我会沿着一条路径发送 OPTIONS 请求,该路径将设置适当的标头并返回 200 响应。并且 POST 请求将沿着不同的路径发送,该路径期望在正文中有有效负载。如果这就是它通常的工作方式,那么这意味着我刚刚发现了 Azure 功能的特性。但如果不是,这意味着我有一些关于 OPTIONS 预检请求的知识。
提前感谢您的建议。
丹尼斯
【问题讨论】:
-
这不是标准的。至少就您所描述的而言。不清楚您所说的 “OPTIONS 请求正在执行我希望只有 POST 执行的代码” 的意思——因为事情是,浏览器完全控制 CORS 预检 OPTIONS 请求,并且浏览器从不发送任何请求正文作为该 OPTIONS 请求的一部分。因此,服务器没有请求主体来处理,鉴于此,不清楚您所说的正在执行的代码将消耗什么。换句话说,对于 OPTIONS,服务器只是接收到对具有特定路径的 URL 的请求。
-
由于此处的字符限制,将澄清作为答案发布。并感谢您的帮助! :-)
标签: azure cors azure-functions preflight