如何处理无效的CORS预检请求?

时间:2015-11-16 15:38:06

标签: cors preflight

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

一些例子:

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

我能找到的唯一线索位于W3C documentation,表示如果预检响应有问题,服务器应该“终止此请求”,但我不确定它是什么样的在实践中(服务器真的应该终止连接而不发回响应吗?)。

或者,服务器根本不需要打扰验证,因为浏览器会通过检查Access-Control-Allow-*响应标头知道它出错了吗?

1 个答案:

答案 0 :(得分:1)

收到无效的CORS预检请求时,

Tomcat's CORS Filter返回403响应:

  

如果请求无效或不被允许,则使用HTTP状态代码403(禁止)拒绝请求。可以使用flowchart来演示此过滤器的请求处理。

当然,文档并没有解释为什么它会这样做,但至少它是一个起点。