假设有一个CORS预检请求,但它为一个或多个Access-Control-Request-*
标头指定了不受支持的值。服务器应该如何将其传回浏览器?
一些例子:
Access-Control-Request-Method: PUT
的预检请求,但服务器不允许对指定资源的PUT请求。Access-Control-Request-Headers: X-PINGOTHER
的预检请求,但服务器不允许/理解该标头。我能找到的唯一线索位于W3C documentation,表示如果预检响应有问题,服务器应该“终止此请求”,但我不确定它是什么样的在实践中(服务器真的应该终止连接而不发回响应吗?)。
或者,服务器根本不需要打扰验证,因为浏览器会通过检查Access-Control-Allow-*
响应标头知道它出错了吗?
答案 0 :(得分:1)
Tomcat's CORS Filter返回403响应:
如果请求无效或不被允许,则使用HTTP状态代码403(禁止)拒绝请求。可以使用flowchart来演示此过滤器的请求处理。
当然,文档并没有解释为什么它会这样做,但至少它是一个起点。