在预检请求不允许POST方法后,浏览器仍然发送HTTP POST请求

时间:2019-02-11 13:13:48

标签: request cors http-post http-method

我对我的API服务器(NodeJS Express)仅允许GET方法感到困惑

res.setHeader('Access-Control-Allow-Methods', 'GET');

然后我发出带有标头的CORS POST请求

headers: {
  'Content-Type': 'application/json',
  'X-Test-Header': 'TESTING'
}

(目的是强制浏览器在POST请求之前调用OPTIONS请求)。然后,我在Chrome调试中检查“网络”标签,它确实发送了2个请求(首先是OPTIONS,然后是POST请求)。 OPTIONS请求的响应标头为:

Access-Control-Allow-Methods: GET

问题是为什么当Allow-Methods标头中不包含POST动词时,为什么它仍然调用POST请求?

任何人都知道这一点,请向我解释。预先感谢。

P / S:使用DELETE或PUT方法,它将引发错误

has been blocked by CORS policy: Method PUT is not allowed
by Access-Control-Allow-Methods in preflight response.

我认为使用POST方法必须抛出相同的错误,以表明该方法不允许

0 个答案:

没有答案