4

假设有一个 CORS 预检请求进入,但它为一个或多个Access-Control-Request-*标头指定了不受支持的值。服务器应该如何将其传回给浏览器?

一些例子:

  • 浏览器使用 发送预检请求Access-Control-Request-Method: PUT,但服务器不允许对指定资源的 PUT 请求。
  • 浏览器使用 发送预检请求Access-Control-Request-Headers: X-PINGOTHER,但服务器不允许/理解该标头。

我能找到的唯一线索位于W3C 文档中,这表明如果预检响应存在问题,服务器应该“终止此请求”,但我不确定实际情况如何(服务器真的应该在不发回响应的情况下终止连接??)。

或者,服务器是否根本不需要验证,因为浏览器只需检查Access-Control-Allow-*响应标头就知道它做错了什么?

4

1 回答 1

1

Tomcat 的 CORS 过滤器在收到无效的 CORS 预检请求时返回 403 响应:

如果请求无效或不允许,则请求被拒绝,HTTP 状态码为 403(禁止)。提供了演示此过滤器的请求处理的流程图。

诚然,文档没有解释它为什么这样做,但至少它可以作为一个起点。

于 2015-11-19T16:46:46.940 回答